Java 中如何把 Excel 转换成 csv

本文介绍了如何在Java中借助集算器高效地将Excel文件转换为csv格式,避免了使用第三方库如poi或jxl时编写大量代码的问题。通过集算器的脚本和JDBC驱动,可以方便地实现数据转换并集成到Java应用中。

Java本身没有支持将Excel转成csv的类库,虽然用诸如poi和jxl等第三方包可以完成转换工作,但仍需要编写大量代码,并且可重用性较差。

例如,销售数据文件(xls或xlsx),如下图所示:

需要将它转换成没有行头(仅包含数据行)的csv文件,如下图所示:

借助集算器可以很方便地完成这件事。

1. 在集算器中编写脚本excel2csv.dfx:

AB
1=file("sales.xlsx").xlsimport@t()/读取excel文件内容
2=file("sales.csv").export@c(A1)/以逗号作为列分隔符,导出不带行头的csv文件

注:集算器会自动识别xls或xlsx文件类型,均使用f.xlsimport()函数读取。

2. 执行脚本,得到不包含行头的csv文件:sales.csv。

3. 集成到java应用中

集算器提供了 JDBC 驱动,将脚本集成代码如下:

 public static void testDataServer() {
                                    Connection con = null;
                                    java.sql.PreparedStatement st;
 try {
                                                      Class.forName("com.esproc.jdbc.InternalDriver");
 con = DriverManager.getConnection("jdbc:esproc:local://");
 // 调用 excel2csv.dfx 脚本
 st = con.prepareCall("call excel2csv()");
 st.execute();
 
                                                      System.out.println("finish");
                                    } catch (Exception e) {
                                                      System.out.println(e);
                                    } finally {
 // 关闭连接
 if (con != null) {
 try {
 con.close();
                                                                        } catch (Exception e) {
                                                                                          System.out.println(e);
                                                                        }
                                                      }
                                    }
                  }

集算器与 JAVA 集成的进一步信息可参考:《Java 如何调用 SPL 脚本》

当导出的csv文件需要包含行头时,只需要在A2中添加函数选项t,即=file("sales.csv").export@tc(A1)。f.export()函数的详细用法见:f.export()

当需要导出的Excel文件较为复杂时,如,文件数据量较大,不适合或者无法直接读入内存,并且需要读取指定sheet页:sales,还要跳过前三行(多层行头),从第四行开始读取数据。只需要将A1改写为:=file("sales.xlsx").xlsimport@c(;"sales",4:) 。f.xlsimport()函数的详细用法见:f.xlsimport()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值