@BeforeDownload InputStream download(String fileName, DataModel model, DataProgress dataProgress) { //獲取模板路徑和臨時存放的路徑 String templatePath = PathHelper.getClassRoot() + "/template/mar/deckMaintenanceHeader_template.xls"; String outPutTemplatePath = PathHelper.getClassRoot() + "/template/mar/deckMaintenanceHeader_output" + strTime + ".xls"; //定義工作簿 HSSFWorkbook workbook = null; try { FileInputStream inputStream=new FileInputStream(new File(templatePath)); workbook=new HSSFWorkbook(inputStream); inputStream.close(); } catch (Exception e) { e.printStackTrace(); } HSSFSheet sheet=workbook.getSheetAt(0); //這裏可以獲取需要的數據 //這裏是一個添加一行的樣板 HSSFRow r=sheet.getRow(i+3) //獲取原始的一行 sheet.shiftRows(i+4,sheet.getLastRowNum(),1) //把原始那行的下一行整體向下移一行 HSSFRow rowCell=sheet.createRow(i+4) //把原始那行的下一行創建一行新的 for (int k=0;k<r.getLastCellNum();k++){ //對原始行每列進行遍歷 HSSFCell newCell=rowCell.createCell(k) //獲取新的單元格 HSSFCell oldCell=r.getCell(k) //獲取原始單元格 //對單元格複製樣式 newCell.setCellStyle(oldCell.getCellStyle()) newCell.setCellType(oldCell.getCellType()) newCell.setCellComment(oldCell.getCellComment()) newCell.getCellStyle().setBorderBottom( oldCell.getCellStyle().getBorderBottom())//這個樣式我暫時不知道是什麼 } //這個是通過四個位置來合併單元格 CellRangeAddress cra2=new CellRangeAddress(25,1,9,10) sheet.addMergedRegion(cra) //寫入數據樣式 sheet.getRow(0).getCell(0).setCellValue("對第一列第一行寫入值"); //寫入臨時文件 workbook.write(new FileOutputStream(outPutTemplatePath)); //輸出 return new FileInputStream(new File(outPutTemplatePath)); }
java對excel的簡單導出
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.