Java - Use JXCell to merge more Excel files

在這邊將探討的是,如何將多個Excel檔案內的sheet做拷貝至一新檔案,並且還可以保持該

sheet下相關報表的樣式。在此將利用到的是JXCell套件來簡單處理這個部分。

之前有介紹幾篇關於JXCell的使用方式,包括讀檔、讀資料、寫入檔案等基本語法,堪稱是

很簡潔的(比起JXL)。而在這邊將下載主計總處網路上公佈的報表來做測試使用。

相關語法如下:
View m_view=new View();
  
m_view.insertSheets(0, 1);
View s_view=new View();
  
s_view.read("D:\\1.xls");
s_view.setSheetName(0, "收支餘絀表");
m_view.setSheet(0);
m_view.CopySheetFromBook(s_view, 0, 0);
  
for(int i = 0 ; i < m_view.getLastRow() ; i++){
   System.out.println(m_view.getText(i, 0)+"---"+s_view.getRowHeight(i)+"---"+m_view.getRowHeight(i));
   m_view.setRowHeight(i, s_view.getRowHeight(i));
}
  
s_view.read("D:\\2.xls");
s_view.setSheetName(0, "平衡表");
m_view.setSheet(1);
m_view.CopySheetFromBook(s_view, 0, 1);
  
for(int i = 0 ; i < m_view.getLastRow() ; i++){
   System.out.println(m_view.getText(i, 0)+"---"+s_view.getRowHeight(i)+"---"+m_view.getRowHeight(i));
   m_view.setRowHeight(i, s_view.getRowHeight(i));
}
  
m_view.write("D:\\output.xls");

首先m_view是要產生新檔案用到的,必須先insertSheets產生兩個sheets (0 ~ 1)。緊接著,

利用CopySheetFromBook將來源端的s_view下的第一個sheet拷貝至目的端的m_view,再來

迴圈跑的目的是檢驗每一個row其高度是否有與來源端的一致。(雖然功能強大,但曾發現

有高度不一致的情形)

由於,這邊是針對兩個檔案下的單一sheet做處理,因此分別有兩段差不多相似的語法!

最後,再利用m_view做輸出檔案的動作!

1.xls

2.xls

output.xls

留言