java對excel的簡單導出

@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));
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章