使用 apache-poi java 无法对 xlsx 文件进行验证
Validations not working on xlsx file using apache-poi java
您好,我正在 java 中使用 apache-poi 创建一个“.xlsx”文件。所以我做了一些验证并生成了文件。现在,如果我在文件的“数据验证”部分中手动检查验证,则在生成的文件中启用这些验证。
但是当我在这些列中输入非法值时,它不会显示任何警告消息,例如 "this value is not permitted" 并继续让用户输入非法值。
public static void main(String[] args) throws Exception
{
XSSFWorkbook workbook = new XSSFWorkbook();
//HSSFWorkbook workbook = new HSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("Order Details");
//HSSFSheet spreadsheet = workbook.createSheet("Order Details");
// Create row object
XSSFRow row;
//HSSFRow row;
CellStyle unlockedCellStyle = workbook.createCellStyle();
unlockedCellStyle.setLocked(false);
int rowid = 0;
row = spreadsheet.createRow(rowid++);
int cellid = 0;
for (String st : XLS_HEADER.split(",")) {
Cell cell = row.createCell(cellid++);
cell.setCellValue(st);
}
CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);
DataValidationHelper dataValidationHelper = spreadsheet.getDataValidationHelper();
DataValidationConstraint constraint = dataValidationHelper.createDateConstraint(OperatorType.BETWEEN,
"25/10/2014", "30/10/2014", "dd/MM/yyyy");
DataValidation validation = dataValidationHelper.createValidation(constraint, addressList);
spreadsheet.addValidationData(validation);
FileOutputStream fileOut = new FileOutputStream("testing-file.xlsx");
workbook.write(fileOut);
fileOut.close();
System.out.println("Your excel file has been generated!");
}
如果我对 HSSFWorkbook 做同样的事情来创建“.xls”文件,它似乎工作正常。它显示弹出警报,不要让用户在字段中输入无效值。
请帮帮我。
得到答案。事实证明,对于每次验证,您都必须在 XSSF 中明确设置警告框。对于我的代码示例,它将如下所示:
validation.setShowErrorBox(true);
所以为了下面的验证
DataValidationHelper dataValidationHelper = spreadsheet.getDataValidationHelper();
DataValidationConstraint constraint = dataValidationHelper.createDateConstraint(OperatorType.BETWEEN,
"25/10/2014", "30/10/2014", "dd/MM/yyyy");
DataValidation validation = dataValidationHelper.createValidation(constraint, addressList);
spreadsheet.addValidationData(validation);
添加以下内容
validation.setShowErrorBox(true);
在将此验证添加到电子表格之前。
这已在 HSSFWorkbook 中启用。
您好,我正在 java 中使用 apache-poi 创建一个“.xlsx”文件。所以我做了一些验证并生成了文件。现在,如果我在文件的“数据验证”部分中手动检查验证,则在生成的文件中启用这些验证。
但是当我在这些列中输入非法值时,它不会显示任何警告消息,例如 "this value is not permitted" 并继续让用户输入非法值。
public static void main(String[] args) throws Exception
{
XSSFWorkbook workbook = new XSSFWorkbook();
//HSSFWorkbook workbook = new HSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("Order Details");
//HSSFSheet spreadsheet = workbook.createSheet("Order Details");
// Create row object
XSSFRow row;
//HSSFRow row;
CellStyle unlockedCellStyle = workbook.createCellStyle();
unlockedCellStyle.setLocked(false);
int rowid = 0;
row = spreadsheet.createRow(rowid++);
int cellid = 0;
for (String st : XLS_HEADER.split(",")) {
Cell cell = row.createCell(cellid++);
cell.setCellValue(st);
}
CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);
DataValidationHelper dataValidationHelper = spreadsheet.getDataValidationHelper();
DataValidationConstraint constraint = dataValidationHelper.createDateConstraint(OperatorType.BETWEEN,
"25/10/2014", "30/10/2014", "dd/MM/yyyy");
DataValidation validation = dataValidationHelper.createValidation(constraint, addressList);
spreadsheet.addValidationData(validation);
FileOutputStream fileOut = new FileOutputStream("testing-file.xlsx");
workbook.write(fileOut);
fileOut.close();
System.out.println("Your excel file has been generated!");
}
如果我对 HSSFWorkbook 做同样的事情来创建“.xls”文件,它似乎工作正常。它显示弹出警报,不要让用户在字段中输入无效值。
请帮帮我。
得到答案。事实证明,对于每次验证,您都必须在 XSSF 中明确设置警告框。对于我的代码示例,它将如下所示:
validation.setShowErrorBox(true);
所以为了下面的验证
DataValidationHelper dataValidationHelper = spreadsheet.getDataValidationHelper();
DataValidationConstraint constraint = dataValidationHelper.createDateConstraint(OperatorType.BETWEEN,
"25/10/2014", "30/10/2014", "dd/MM/yyyy");
DataValidation validation = dataValidationHelper.createValidation(constraint, addressList);
spreadsheet.addValidationData(validation);
添加以下内容
validation.setShowErrorBox(true);
在将此验证添加到电子表格之前。
这已在 HSSFWorkbook 中启用。