Excel的Sheet頁復制
阿新 • • 發佈:2017-10-06
進行 pre ktr trace eat div reat 問題 讀寫
最近在做一個項目,其中涉及基於模板對Excel的Sheet頁進行復制。在網上嘗試了很多,發現都不夠完美,苦惱。
然後在查閱資料的過程中,發現有一篇提及,POI的API只對同一個Excel文件中的Sheet頁復制提供了支持,沒有對跨文件復制進行支持。看到這句話我很奇怪,同一個文件和跨文件有什麽不同麽,不都是對文件的讀寫。
等等,好像是想多了,不然以POI小分隊的能力不會不支持的。
於是有了下面的代碼。
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調就行了。
Excel的Sheet頁復制