java怎样将xls转csv?
不是通过Excel直接另存为*.csv(因为在这个过程中会出现乱码),是通过JAVA把导入的*.xls转为*.csv,然后再通过程序读*.csv文件把数据写入数据库。ps:我个人也觉得这样很多余,直接读*.xls就就行了吗,但是经理说这样会出问题,如果*.xls里面有函数什么的容易出错,他还说最过几年*.xls可能就不用了,但是*.csv却是一直会有的。

解决方案 »

  1.   

    你们项目经理经验咋这样啊?*.xls里面的东西会容易出错,难道你把它转换为csv在读xls的时候就不会出错吗?答案是肯定的。所以说这步完全没必要。作用只能是让你的程序多了个环节,增加出错概率。
      

  2.   

    *.xls文件应用很广泛,就冲这个ms也不可能废弃excel。没有erp系统之前,大企业主要靠Excel,它的功能非常强大,只不过我们平时用不到那么多而已,绝对不会不用的。除非你们项目经理的意思是,过几年你们的系统就不用Excel了,而不是微软。
      

  3.   

    他说的不用,可能是说被*.xlsx或其他被的更优秀的格式代替吧。好象跑题了,我的问题是有没有办法将xls转csv(是通过程序转换,不是通过Excel直接另存为*.csv)? 
      

  4.   

    唉!给你个终极回答,多了也不想再说了。*.xlsx是office2007支持的格式,目前poi支持它第一版的xlsx。如果使用java解析excel文件,可以依靠那些开源应用和微软公布的二进制格式来,但是这两种不管用哪种方法,如果微软修改了格式,就会出现不兼容的情况,这无法避免。
    还有一种,就是使用office的com组件完成这个操作,也就相当于自己用excel的另存功能,把它另存为csv.用这种方式,只要及时更新运行该程序的计算机上的Excel就可以了,编程接口改变的机会不大。基本上都是调用Excel的“Save As”,不过多用户并发的时候会有点不爽,而且有可能造成资源无法释放。访问com组件可以用jacob组件。回答完毕,最后感慨一下你们的项目经理:nb的有点过头。
      

  5.   

    给你个另外的选择,不过这个方法只能在windows服务器上运行。excel一直都是支持使用oledb驱动程序访问的,所以可以通过使用jdbc连接excel的方式,用select语句完成选择数据的工作,然后输出到csv.或者干脆不用csv,用oledb就完了。
      

  6.   

    开源应用和微软公布的二进制格式这两中方式我都试过,首先我是用JXL解析excel文件得到数据,然后再把数据写入CSV,然后再把得到的CSV导入数据库——自己个觉得很白痴,直接导入excel文件不就得了;另外我也试过二进制格式导入,但是越南文老是乱码。如果使用office的com组件完成这个操作,我觉得不行,因为我直接用excel的另存功能得到的CSV都是乱吗了,更何况是通过JAVA调用。

    不管怎么样,非常谢谢你的帮助,从中学到不少~~~~~~
      

  7.   

    我们使用的服务器都是LINUX,所以这个方法行不通,谢谢~~~~~~
      

  8.   

    我觉得问题在于,有的数据库工具只能导出csv,不能导出xls,这才是将csv转换为 xls的必要性所在。--openjweb