赞
踩
通过easyexcel将csv文本文件转换为excel xlsx的jar包小工具。
业务部门天天找运维部门导数据,一般数据库导出csv文件还是可以的。但业务部门说只会用xls、xlsx,其他的不会。导出的文本文件有时候到几十上百M了,这是要多少行数据。
业务部门要看几百万数据量的excel?xlsx文件单个sheet最多也就1048576行,双击打开都要开半天。这是何苦呢。
运维的同事暂时也没啥好的办法,只能是split按行数先拆分文件,然后复制粘贴到excel,最后交付给业务部门。
Linux下也可以用Gnumeric ssconvert。主要是我也不会,还是写个jar给他们用吧。
ssconvert参考:
1、在Linux中CSV转换成XLSX
2、The Gnumeric Manual, version 1.12。见14.8.Converting Files
需要一个将csv转换为xlsx文件的工具。
先写了一个普通的通过POI HSSF将csv转excel的demo出来先,而后考虑以下问题:
通过easyexcel将文本文件转xlsx。
之前一度卡在如何不建实体类来写xlsx文件上,看官网都是如下代码,感觉都要建个实体类?
excelWriter = EasyExcel.write(fileName, DemoData.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
excelWriter.write(data(), writeSheet);
最终发现将一行内的单元格内容构造为List<List>的样式即可,代码为:
List<List<String>> list = new ArrayList<List<String>>();
list.add(Arrays.asList(getTrimStrs(line, Delimiter_in)));
writer.write(list, sheet);
jar包代码:
public class CsvToXlsxUtil { //默认参数 static String Delimiter_in = "|"; static String fileType = "txt"; static long rowmax = 1000000;// 最大行数100w行 static boolean isHeader = true; static Pattern r = Pattern.compile("^\\.\\d+$"); private static boolean getInput() { Scanner scanner=new Scanner(System.in); //输入分隔符,默认为竖线 System.out.print("请输入分隔符,带双引号,如:, | #(默认为竖线|):"); String din=scanner.nextLine(); if(din!=null && din.length()>0){ Delimiter_in=getDelimiter(din); }else{ Delimiter_in=getDelimiter(Delimiter_in); } // 输入文件后缀名,默认为txt System.out.print("请输入待转换为xlsx的文件后缀名,如:txt csv(默认为txt):"); String fin=scanner.nextLine(
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。