使用Spire.XLS for Java 将Excel表的两列数据互换位置

【使用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);}
加载文档后,调用的()方法,获得这张表的最后一行,也就是行数;然后使用的方法获得需要复制的这一列数据,参数为:
CellRange getCellRange(int row, int column, int lastRow, int lastColumn)
这个方法的索引是从1开始,即我代码中我不要表头,类似于定位,我从第5行开始,定位第7列,是count(也就是最第5行到最后一行),是最后一列,是7,最终的结果也就是从第5行,第7列开始,这个表的第7列,最后一行,即第7列的所有数据:
CellRange range1 = sheet.getCellRange(5, 7, count, 7);
同理,获得第9列的数据,此处是空白数据:
CellRange range2 = sheet.getCellRange(5, 9, count, 9);

使用Spire.XLS for Java 将Excel表的两列数据互换位置

文章插图
调用sheet.copy(, , true)方法将第7列拷贝到第9列,该方法的源码如下:
三个参数的含义,第一个代表是源数据,此处是第7列,第二个是即目标数据内容,此处是第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;
或 com.spire.xls.*;