最近在作一個項目,其中涉及基於模板對Excel的Sheet頁進行復制。在網上嘗試了不少,發現都不夠完美,苦惱。spa
而後在查閱資料的過程當中,發現有一篇說起,POI的API只對同一個Excel文件中的Sheet頁複製提供了支持,沒有對跨文件複製進行支持。看到這句話我很奇怪,同一個文件和跨文件有什麼不一樣麼,不都是對文件的讀寫。code
等等,好像是想多了,否則以POI小分隊的能力不會不支持的。blog
因而有了下面的代碼。it
try (HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(new FileInputStream("C:\\demo.xls")))) { HSSFWorkbook wbNew = new HSSFWorkbook(); Sheet sheetNew = wb.createSheet("票據1"); sheetNew = wb.cloneSheet(0); wb.setSheetName(1, "票據0");
try (FileOutputStream fileOut = new FileOutputStream("C:\\票據1.xls")) { wb.write(fileOut); } } catch (IOException e) { e.printStackTrace(); }
所謂複製到新文件嘛。用新的輸出流寫不就好了嘛。不過這個方法有兩個問題。第一,不能設置新Sheet頁的名字。第二,不支持xlsx文件。對我來講這都不是問題。實際還有第三個問題,多個文件中的內容複製到同一個文件中不知道行不行。想來是能夠的,手工編輯一下模板就能夠了。最後,建議使用C#編寫三件套的應用,用Java調就好了。io