java怎样将xls转csv

bingliang008 2009-05-25 04:08:51
java怎样将xls转csv?
不是通过Excel直接另存为*.csv(因为在这个过程中会出现乱码),是通过JAVA把导入的*.xls转为*.csv,然后再通过程序读*.csv文件把数据写入数据库。

ps:我个人也觉得这样很多余,直接读*.xls就就行了吗,但是经理说这样会出问题,如果*.xls里面有函数什么的容易出错,他还说最过几年*.xls可能就不用了,但是*.csv却是一直会有的。
...全文
1423 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
baozhengw 2010-11-16
  • 打赏
  • 举报
回复
我觉得问题在于,有的数据库工具只能导出csv,不能导出xls,这才是将csv转换为 xls的必要性所在。--openjweb
TXJ_NO 2010-07-14
  • 打赏
  • 举报
回复
LZ问题解决了没?我现在也要处理这个问题,帮忙指教下!
loveunittesting 2009-05-27
  • 打赏
  • 举报
回复
给你个另外的选择,不过这个方法只能在windows服务器上运行。excel一直都是支持使用oledb驱动程序访问的,所以可以通过使用jdbc连接excel的方式,用select语句完成选择数据的工作,然后输出到csv.或者干脆不用csv,用oledb就完了。
loveunittesting 2009-05-27
  • 打赏
  • 举报
回复
唉!给你个终极回答,多了也不想再说了。*.xlsx是office2007支持的格式,目前poi支持它第一版的xlsx。如果使用java解析excel文件,可以依靠那些开源应用和微软公布的二进制格式来,但是这两种不管用哪种方法,如果微软修改了格式,就会出现不兼容的情况,这无法避免。
还有一种,就是使用office的com组件完成这个操作,也就相当于自己用excel的另存功能,把它另存为csv.用这种方式,只要及时更新运行该程序的计算机上的Excel就可以了,编程接口改变的机会不大。基本上都是调用Excel的“Save As”,不过多用户并发的时候会有点不爽,而且有可能造成资源无法释放。访问com组件可以用jacob组件。回答完毕,最后感慨一下你们的项目经理:nb的有点过头。
bingliang008 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yys79 的回复:]
*.xls文件应用很广泛,就冲这个ms也不可能废弃excel。没有erp系统之前,大企业主要靠Excel,它的功能非常强大,只不过我们平时用不到那么多而已,绝对不会不用的。除非你们项目经理的意思是,过几年你们的系统就不用Excel了,而不是微软。
[/Quote]
他说的不用,可能是说被*.xlsx或其他被的更优秀的格式代替吧。

好象跑题了,我的问题是有没有办法将xls转csv(是通过程序转换,不是通过Excel直接另存为*.csv)?
loveunittesting 2009-05-27
  • 打赏
  • 举报
回复
*.xls文件应用很广泛,就冲这个ms也不可能废弃excel。没有erp系统之前,大企业主要靠Excel,它的功能非常强大,只不过我们平时用不到那么多而已,绝对不会不用的。除非你们项目经理的意思是,过几年你们的系统就不用Excel了,而不是微软。
bingliang008 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yys79 的回复:]
给你个另外的选择,不过这个方法只能在windows服务器上运行。excel一直都是支持使用oledb驱动程序访问的,所以可以通过使用jdbc连接excel的方式,用select语句完成选择数据的工作,然后输出到csv.或者干脆不用csv,用oledb就完了。
[/Quote]
我们使用的服务器都是LINUX,所以这个方法行不通,谢谢~~~~~~
bingliang008 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yys79 的回复:]
唉!给你个终极回答,多了也不想再说了。*.xlsx是office2007支持的格式,目前poi支持它第一版的xlsx。如果使用java解析excel文件,可以依靠那些开源应用和微软公布的二进制格式来,但是这两种不管用哪种方法,如果微软修改了格式,就会出现不兼容的情况,这无法避免。
还有一种,就是使用office的com组件完成这个操作,也就相当于自己用excel的另存功能,把它另存为csv.用这种方式,只要及时更新运行该程序的计算机上的Excel就可…
[/Quote]
开源应用和微软公布的二进制格式这两中方式我都试过,首先我是用JXL解析excel文件得到数据,然后再把数据写入CSV,然后再把得到的CSV导入数据库——自己个觉得很白痴,直接导入excel文件不就得了;另外我也试过二进制格式导入,但是越南文老是乱码。

如果使用office的com组件完成这个操作,我觉得不行,因为我直接用excel的另存功能得到的CSV都是乱吗了,更何况是通过JAVA调用。

不管怎么样,非常谢谢你的帮助,从中学到不少~~~~~~
bingliang008 2009-05-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yys79 的回复:]
你们项目经理经验咋这样啊?*.xls里面的东西会容易出错,难道你把它转换为csv在读xls的时候就不会出错吗?答案是肯定的。所以说这步完全没必要。作用只能是让你的程序多了个环节,增加出错概率。
[/Quote]
我也这样跟他说的,但是他给了我一句:是不一样的,我现在忙有空跟你说,就走了~~~~~~~
wxzyydy 2009-05-26
  • 打赏
  • 举报
回复
帮楼主顶顶,顺便节点分哦,谢谢啦
loveunittesting 2009-05-26
  • 打赏
  • 举报
回复
你们项目经理经验咋这样啊?*.xls里面的东西会容易出错,难道你把它转换为csv在读xls的时候就不会出错吗?答案是肯定的。所以说这步完全没必要。作用只能是让你的程序多了个环节,增加出错概率。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧