Java 中如何把 Excel 转换成 csv

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

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

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

借助集算器可以很方便地完成件事。
集算器安装包可去润乾网站,运行需要一个授,免版本就用。

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


A

B

1

=file("sales.xlsx").xlsimport@t()

/读取excel文件内容

2

=file("sales.csv").export@c(A1)

/以逗号作为列分隔符,导出不带行头的csv文件

注:集算器会自动识别xlsxlsx文件型,均使用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文件较为杂时,如,文件数据量大,不适合或者无法直接入内存,并且需要取指定sheetsales要跳前三行(多),从第四行开始读取数据只需要将A1改写为:=file("sales.xlsx").xlsimport@c(;"sales",4:) f.xlsimport()函数的详细用法f.xlsimport()