使用Apache POI创建只读.xlsx文件时出错

时间:2016-09-20 13:15:43

标签: java apache-poi

我正在尝试使用Apache POI 3.10创建一个只读Excel工作表。

private void lockAll(Sheet s, String password) throws Exception{

    XSSFSheet sheet = ((XSSFSheet)s);

     sheet.protectSheet(password);
     sheet.enableLocking();

     sheet.lockSelectLockedCells();
     sheet.lockSelectUnlockedCells();  

}

现在我在使用以下内容创建excel表后调用此方法。

private String generateExcel(List<Model> DataList) {
    Workbook wwbook = null;
    File ff = null;
    try {

        String filePath =  // getting this path using ServletContext.
        wwbook = new XSSFWorkbook();
        Sheet wsheet = wwbook.createSheet("MyReport");
        ApachePoiExcelFormat xlsxExcelFormat = new ApachePoiExcelFormat();
        CellStyle sheetHeading = xlsxExcelFormat.SheetHeading(wwbook);

        //My personal org.apache.poi.ss.usermodel.CellStyle here.
        short col = 0, row = 0;
        XSSFRow hrow = (XSSFRow) (XSSFRow) wsheet.createRow(row);
        XSSFCell cell = hrow.createCell(col);

        //My code here to iterate List and add data to cell.


        FileOutputStream fileOut = new FileOutputStream(filePath.toString());
        wwbook.write(fileOut);
        lockAll(wsheet, "password");   //******calling the method to lock my sheet.
        fileOut.close();

        System.out.println("Excel Created");


        } catch (Exception e) {
            e.printStackTrace();
    } finally {
}
    return filePath;
}

现在我正在运行此代码来下载excel文件。然后我在网页上收到错误,但在我的eclipse控制台上没有。 接下来,我在lockAll方法中注释以下行后尝试运行相同的代码。然后根据需要进行excel下载,但表格中的每个单元格都是可编辑的。

sheet.protectSheet(password);

0 个答案:

没有答案