1. 程式人生 > >Java 複製Excel工作表

Java 複製Excel工作表

本文歸納了關於Java如何複製Excel工作表的方法,按不同複製需求,可分為:

1. 複製工作表

   1.1 在同一個工作簿內複製工作表

   1.2 在不同工作簿間複製工作表

2. 複製指定單元格資料

對於複製方法copy(),這裡簡單整理了一個表格,其中包含了對資料複製的不同應用需求,可參考使用:

方法

解釋

copyFrom(Worksheet worksheet)

複製自源工作表的資料

copy(CellRange sourceRange, CellRange destRange)

複製源資料到目標資料範圍

copy(CellRange sourceRange, CellRange destRange, Boolean copyStyle)

複製源資料到目標資料範圍時,是否複製源資料樣式

copy(CellRange sourceRange, Worksheet worksheet, int destRow, int destColumn)

複製源資料到目標工作表中的指定行和列

copy(CellRange sourceRange, Worksheet worksheet, int destRow, int destColumn, Boolean copyStyle)

複製源資料到目標工作表中的指定行和列時,是否複製源資料樣式

copy(CellRange sourceRange, CellRange destRange, Boolean copyStyle, Boolean updateReference, Boolean ignoreSize)

複製源資料到目標資料範圍時,是否複製源資料樣式,是否更新引用,是否忽略大小

copy(CellRange sourceRange, Worksheet worksheet, int destRow, int destColumn, boolean copyStyle, boolean undateReference)

複製源資料到目標工作表中的指定行和列時,是否複製源資料樣式,是否更新引用

copy(CellRange sourceRange, CellRange destRange, boolean copyStyle, boolean updateReference, boolean ignoreSize, boolean copyShape)

複製源資料到目標資料範圍時,是否複製源資料樣式,是否更新引用,是否忽略大小,是否複製形狀

 

文中的方法使用了免費Java Excel類庫(Free Spire.XLS for Java),可在官網下載包,解壓後,將lib資料夾中的jar檔案匯入Java程式;或者通過maven倉庫下載匯入jar,maven倉庫路徑配置及依賴新增可以參考教程。匯入效果如下圖:

 

Java程式碼示例

【示例1】在同一工作簿內複製

import com.spire.xls.*;

public class Copy1 {
    public static void main(String[] args) {
        //載入文件
        Workbook wb = new Workbook();
        wb.loadFromFile("test.xlsx");

        //獲取第一張工作表
        Worksheet sheet0 = wb.getWorksheets().get(0);

        //獲取第三張工作表,命名,並將第一張工作表內容複製到該工作表
        Worksheet sheet2 = wb.getWorksheets().get(2);
        sheet2.setName("Copiedsheet");
        sheet2.copyFrom(sheet0);

        //儲存文件
        wb.saveToFile("Copy1.xlsx",FileFormat.Version2013);
    }
}

複製效果:

 

【示例2】在不同工作簿間複製

import com.spire.xls.*;

public class Copy2 {
    public static void main(String[] args) {
        //載入文件1,並獲取第一張幻燈片
        Workbook wb1 = new Workbook();
        wb1.loadFromFile("test1.xlsx");
        Worksheet sheet1 = wb1.getWorksheets().get(0);

        //載入文件2,獲取第三張幻燈片,並將文件1中的工作表內容複製到該工作表
        Workbook wb2 = new Workbook();
        wb2.loadFromFile("test2.xlsx");
        Worksheet sheet2 = wb2.getWorksheets().get(2);
        sheet2.setName("Copied");
        sheet2.copyFrom(sheet1);

        //儲存文件
        wb2.saveToFile("Copy2.xlsx",FileFormat.Version2013);
    }
}

複製效果:

 

【示例3】複製單元格資料範圍

import com.spire.xls.*;

public class CopyRange {
    public static void main(String[] args) {
        //載入文件
        Workbook wb = new Workbook();
        wb.loadFromFile("test.xlsx");

        //獲取第一個工作表
        Worksheet sheet = wb.getWorksheets().get(0);

        //複製指定單元格範圍中的資料
        CellRange range1 = sheet.getCellRange(8,1,8,7);
        CellRange range2 = sheet.getCellRange(11,1,11,7);
        sheet.copy(range1,range2,true);

        //儲存文件
        wb.saveToFile("CopyRange.xlsx",FileFormat.Version2013);
    }
}

複製結果:

 

(本文