/ **
**ターゲットセル値
* /
パブリック クラス細胞{ / ** * *行 * / プライベート int型のロウ; / ** *コラム * / プライベート int型のカラム; / ** *セルの値 * / プライベートヴァルオブジェクト、 パブリック INT のgetRow(){ 戻り、行 } 公共 ボイド setRow(INTの行){ この .Row = 行; } 公共 のint のgetColumn(){ 戻り列と、 } 公共 ボイド SetColumn関数(int型の列){ この .column = コラム。 } パブリックオブジェクトGETVAL(){ 戻りヴァルと、 } 公共 ボイドSETVAL(オブジェクト・ヴァル){ この .val = ヴァル。 } パブリック細胞(int型の列、int型のカラム、ヴァルオブジェクト){ この .row = 行。 この .column = カラム; この .val = valの; } パブリック細胞(){} }
/ **
**表空间对象
** /
パブリック クラスシート{ プライベート文字列SHEETNAME。 パブリック文字列getSheetName(){ 戻りSHEETNAMEと、 } 公共 ボイドsetSheetName(文字列SHEETNAME){ この .sheetName = SHEETNAME。 } パブリックリスト<細胞> getCells(){ 戻り細胞。 } 公共 ボイド setCells(一覧<細胞> 細胞){ これは = .cells 細胞。 } プライベートリスト<細胞>細胞=Lists.newArrayList(); パブリックシート(文字列SHEETNAME、リスト<細胞> 細胞){ この .sheetName = SHEETNAME。 これは = .cells 細胞; } パブリックシート(){} }
1 パブリック 最終 クラスExcelUntil { 2 。3 / ** 4 *テンプレートは、Excelを派生 5 * @param templatePathテンプレートパスを 6 * @paramのオブジェクト空間のシートのシート設定テーブルセル特定値 。7 * @param EXPORTPATH輸出経路 8 * @スロー例外 。9 * / 10 @SuppressWarnings( "リソース" ) 。11 公共 静的 無効 exportExcelByTemplate(文字列templatePath、リスト<シート> シート、文字列EXPORTPATH) 12があるが スローされます例外{ 13 であれば(Strings.isStringEmpty(templatePath)|| CollectionUtils.isEmpty(シート)|| Strings.isStringEmpty(EXPORTPATH)){ 14 リターン。 15 } 16 = ExcelUntilでのInputStream。クラス.getResourceAsStream(templatePath)。 17 POIFSFileSystem poifsFileSystem = 新しいPOIFSFileSystem(IN) 18 HSSFWorkbookブック= 新しいHSSFWorkbook(poifsFileSystem)。 19 のために(int型、iが(sheets.sizeを<); I = 0 iが++ ){ 20 HSSFSheetシート=workbook.getSheetAt(I); 21 sheet.setForceFormulaRecalculation(真)。 22 リスト<細胞>細胞= sheets.get(I).getCells(); 23 cellSetValue(シート、細胞)。 24 } 25 のFileOutputStreamアウト= 新しいたFileOutputStream(EXPORTPATH)。 26 workbook.write(アウト)。 27 out.close()。 28 } 29 30 31 パブリック 静的 HSSFWorkbook exportExcel(文字列templatePath、リスト<シート> シート、文字列EXPORTPATH) 32は、 スロー例外{ 33 = ExcelUntilでのInputStream。クラス.getResourceAsStream(templatePath)。 34 POIFSFileSystem poifsFileSystem = 新しいPOIFSFileSystem(IN) 35 HSSFWorkbookブック= 新しいHSSFWorkbook(poifsFileSystem)。 36 のためには、(int型 0 = Iと、iはsheets.sizeを()<; iは++ ){ 37 HSSFSheetシート= workbook.getSheetAt(I)。 38 sheet.setForceFormulaRecalculation(真)。 39 リスト<細胞>細胞= sheets.get(I).getCells(); 40 cellSetValue(シート、細胞); 41である } 42は、 戻りブック、 43は 44れる } 45 46である 47 / ** 48 の特定のセルの*設定値 49 * @paramのシートの特定のテーブルスペース 50個の * @param 特定の細胞が細胞内に配置された 51 * / 52である プライベート 静的 ボイド cellSetValue(HSSFSheetシート、リスト<細胞> 細胞){ 53れる // データのランクを設定し、設定値 54が セルC = NULL ; 55 オブジェクトヴァル= NULL; 56 HSSFCellセル= NULL ; 57 のために(int型 i = 0; iが++; iがcells.size()< ){ 58 C = cells.get(i)を、 59 もし(C == NULL ){ 60 続けます。 61 } 62 ヴァル= c.getVal()。 63 セル= sheet.getRow(c.getRow() - 1).getCell(c.getColumn() - 1 )。 64 であれば(ヴァルinstanceofの整数){ 65 cell.setCellValue((整数)のVal); 66 } そう であれば(ヴァルinstanceofのダブル){ 67 cell.setCellValue((ダブル)のVal); 68 } そう であれば(ヴァルのinstanceof 日){ 69 cell.setCellValue((日)のVal); 70 } そう であれば(ヴァルinstanceofのショート){ 71 cell.setCellValue((ショート)のVal); 72 } 他{ 73 cell.setCellValue(ヴァル+ "" )。 74 } 75 } 76 } 77 }