/**
* 首尾两列互换
* 先将首列复制粘贴到新建的临时工作表中,再将尾列复制到首列上;
* 最后将临时工作表的列复制到尾列
*/
void ColSwap()
{
String strTempSheet = "$tmp" + java.lang.System.currentTimeMillis() + "pmt$"; //临时工作表名
Worksheets worksheets = Application.getWorkbooks().getActiveWorkbook().getWorksheets();
Worksheet sheet = worksheets.getActiveWorksheet();
maxColumn = sheet.getMaxDataColumn(); //当前表有数据的最大列范围
maxRow = sheet.getMaxDataRow(); //当前表有数据的最大行范围
Range range = sheet.getActiveRange(); //当前选中范围
startColumn = range.getStartColumn();
endColumn = range.getEndColumn();
if(startColumn == endColumn){
Application.getDialogs().showMessageDialog("只选一列无法进行两列互换哟.");
return;
}
// if(endColumn > maxColumn){
// endColumn =maxColumn;
// }
startRow = range.getStartRow();
endRow = range.getEndRow();
// if(endRow > maxRow){
// endRow = maxRow;
// }
//起始列复制粘贴到临时工作表中
range = sheet.getRange(startRow, startColumn, endRow, startColumn);
range.copy();
Worksheet tempsheet = worksheets.addWorksheet(strTempSheet);
tempsheet.activate();
range = tempsheet.getRange(startRow, startColumn, endRow, startColumn);
range.paste();
//终止列复制粘贴到起始列
sheet.activate();
range = sheet.getRange(startRow, endColumn, endRow, endColumn);
range.copy();
range = sheet.getRange(startRow, startColumn, endRow, startColumn);
range.paste();
//临时表的起始列复制粘贴到表的终止列
tempsheet.activate();
range = tempsheet.getRange(startRow, startColumn, endRow, startColumn);
range.copy();
sheet.activate();
range = sheet.getRange(startRow, endColumn, endRow, endColumn);
range.paste();
//清剪贴板,删除临时工作表
Application.getClipboard().clear();
worksheets.removeWorksheet(strTempSheet);
sheet.activate();
}
转载于:https://my.oschina.net/u/1433826/blog/614936