我正在使用 Apache POI 生成 Excel 文件(.xlsx 格式)
我被两件事困住了。
首先,我想在生成的 excel 文件中禁用一些功能,例如格式化单元格。
我已经习惯了遵循代码来实现它(从Apache POI 获得 - How to protect sheet with options?。
sheet.lockDeleteColumns();
sheet.lockDeleteRows();
sheet.lockFormatCells();
sheet.lockFormatColumns();
sheet.lockFormatRows();
sheet.lockInsertColumns();
sheet.lockInsertRows();
sheet.getCTWorksheet().getSheetProtection().setPassword(pwdBytes);
sheet.enableLocking();
workbook.lockStructure();
但是此代码使生成的工作表成为只读的。我无法在生成的 Excel 表中输入任何数据。
请告诉我如何仅禁用少数功能并同时启用读取和写入。
其次,Excel文件中有一个日期列。我想在列级别应用一些日期验证(类似于 isValidDate)。
我试过XSSFDataValidationHelper createCustomConstraint,但没有成功,验证不适用于日期列。当我打开生成的 excel 文件时,出现以下错误
Excel 在文件中发现不可读的内容。
我猜函数有问题(createCustomConstraint(“ISNUMBER()”);。
下面是我用过的代码片段。
XSSFDataValidationConstraint dateConstraint = (XSSFDataValidationConstraint) dvHelper
.createCustomConstraint("ISNUMBER()");
CellRangeAddressList dateAddressList = new CellRangeAddressList(0,
10000, 2, 3);//1000rows and 3rd & 4th column
DataValidation dateValidation = dvHelper.createValidation(
dateConstraint, dateAddressList);
dateValidation.setEmptyCellAllowed(true);
dateValidation.setErrorStyle(DataValidation.ErrorStyle.STOP);
dateValidation.createErrorBox("Error", "InValid Date.");
dateValidation.setShowErrorBox(true);
sheet.addValidationData(dateValidation);
请帮我解决这两个问题。
提前致谢。