因工作需要,一直在摸索使用java代码操作Excel文件的方式,之前一直使用POI的方式在进行读写,代码冗长,不易维护。无意中发现了Spire.XLS for Java 这个java操作excel的组件。它可以很方便的操作EXCEL文件,
官网地址:https://www.e-iceblue.cn/Downloads/Free-Spire-XLS-JAVA.html
同时他也有自己的帮助文档,虽说个人觉得帮助文档写的不够详细,但是仔细研究一下、查看源码还是大概可以完成一些简单的功能。
该组件包可以通过maven仓库下载:
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls.free</artifactId>
<version>2.2.0</version>
</dependency>
首先体验最简单的功能,用JAVA代码对EXCEL表格里的一列或多列进行删除,
/***
* 删除不需要的列,保留需要的“峰值流出流速(Mbit/s)等需要的信息”
*/
public static void deleteOLTCol() {
//加载文档
Workbook wb = new Workbook();
System.out.println("加载OLT流量报表....");
wb.loadFromFile("F:\\Datareport\\OLT.xlsx");
//获取工作表
Worksheet sheet = wb.getWorksheets().get(0);
//从第9列开始删除,删除9列在内的4列
sheet.deleteColumn(9, 4);
//经过上一次删除后,索引重新从1开始,从第11列开始,删除11列在内的4列
sheet.deleteColumn(11, 4);
//保存文档
wb.saveToFile("F:\\Datareport\\OLT流量报表.xlsx");
wb.dispose();
System.out.println("OLT流量报表格式整理完成....");
}
首先要导入 import com.spire.xls.Workbook,或者直接导入import com.spire.xls.*,通过Workbook的对象wb的loadFromFile()方法获得需要操作的Excel文件,然后去获得他的工作表,此处工作表的索引从0开始,即第一张工作表是wb.getWorksheets().get(0),(此处想要吐槽一下,这个组件的索引不太明确,有的索引从1开始,有的从0开始,经常会弄乱。比如他的复制单元格内容,有的索引就是从1开始)
想要删除某一列单元格在这个组件上操作很方便,获得工作表对象sheet后,调用它的deleteColum()方法即可,Spire .XLS for Java的源码如下:
此时的index是从1开始的,sheet.deleteColumn(9, 4)的意思是删除从第9列开始删除,删除第9列在内的4列,即9、10、11、12列:
我要删除这4列,执行后结果如下:
最后调用保存方法保存到另一个文件,对源文件不会造成数据的损失,wb.saveToFile();
同理,如果要删除某银行,调用sheet.deleteRow(int index, int count)方法。