使用Spire.XLS for Java 将Excel表的两列数据互换位置
想实现个功能, 将excel数据重新排序,把其中的两列数据互换位置。在网上查了一下,有不少的实现方法,后来发现还是使用spire xls简单。
想要实现的效果如下,将这两列数据换位置:

换完之后效果图:

首先我的思路是使用spire xls 的拷贝功能,和排序算法思路差不多,把需要替换位置的那一列数据复制到空白的一列,然后将它后一列往前挪,即G->I,H->G,I->H,这样就完成了替换,代码如下:
/*** 由于原表里 平均流出流速 和 平均日峰值流出利用率 是反过来的,所以需要将这两列互换*/public static void RotateCol() {//加载文档Workbook wb = new Workbook();wb.loadFromFile("F:\\Datareport\\DeleteDSWColumn.xlsx");//获取第一个工作表Worksheet sheet = wb.getWorksheets().get(0);//获得行数Integer count = sheet.getLastRow();//复制指定单元格范围中的数据,此处是复制第7列到第9列CellRange range1 = sheet.getCellRange(5, 7, count, 7);CellRange range2 = sheet.getCellRange(5, 9, count, 9);sheet.copy(range1, range2, true);//把第8列弄到第7列CellRange range3 = sheet.getCellRange(5, 8, count, 8);CellRange range4 = sheet.getCellRange(5, 7, count, 7);sheet.copy(range3, range4, true);//把第9列弄到第8列 即完成替换CellRange range5 = sheet.getCellRange(5, 9, count, 9);CellRange range6 = sheet.getCellRange(5, 8, count, 8);sheet.copy(range5, range6, true);//把多余的列删除sheet.deleteColumn(9, 1);//保存文档wb.saveToFile("F:\\Datareport\\汇聚交换机流量报表.xlsx", FileFormat.Version2013);}
加载文档后,调用Worksheet的getLastRow()方法,获得这张表的最后一行,也就是行数;然后使用CellRange的getCellRange方法获得需要复制的这一列数据,参数为:

CellRange getCellRange(int row, int column, int lastRow, int lastColumn)
这个方法的索引是从1开始,即我代码中我不要表头,类似于定位,我从第5行开始,定位第7列,lastRow是count(也就是最第5行到最后一行),lastColumn是最后一列,是7,最终的结果也就是从第5行,第7列开始,这个表的第7列,最后一行,即第7列的所有数据:
CellRange range1 = sheet.getCellRange(5, 7, count, 7);
同理,获得第9列的数据,此处是空白数据:
CellRange range2 = sheet.getCellRange(5, 9, count, 9);
调用sheet.copy(range1, range2, true) 方法将第7列拷贝到第9列,该方法的源码如下:

三个参数的含义,第一个sourceRange代表是源数据,此处是第7列,第二个是destRange即目标数据内容,此处是第9列,最后一个参数代表是否保留源数据的数据格式,ture为保留,false为使用目标单元格的格式。
//把第8列弄到第7列 CellRange range3 = sheet.getCellRange(5, 8, count, 8); CellRange range4 = sheet.getCellRange(5, 7, count, 7); sheet.copy(range3, range4, true); //把第9列弄到第8列 即完成替换 CellRange range5 = sheet.getCellRange(5, 9, count, 9); CellRange range6 = sheet.getCellRange(5, 8, count, 8); sheet.copy(range5, range6, true);
经过两次排序,就可以实现将第7列和第8列数据互换的目的。
上述的类、方法,需要导包:
import com.spire.xls.CellRange; import com.spire.xls.FileFormat; import com.spire.xls.Workbook; import com.spire.xls.Worksheet;
或 import com.spire.xls.*;
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
