gpt4 book ai didi

java - 使用 Apache POI 删除 HSSF 表的数据验证

转载 作者:搜寻专家 更新时间:2023-11-01 03:51:03 25 4
gpt4 key购买 nike

如何使用 apache POI 去除 excel 的数据验证。我有以下代码。第一次运行时,下拉列表已正确创建,但一旦我再次运行程序并使用字符串列表中的不同值,下拉列表就不会更新。

FileInputStream fsIP= new FileInputStream(new File("D:\\template3.xls")); //Read the spreadsheet that needs to be updated              
HSSFWorkbook wb = new HSSFWorkbook(fsIP); //Access the workbook
HSSFSheet worksheet = wb.getSheetAt(0); //Access the worksheet, so that we can update / modify it.
// System.out.println(worksheet.getRow(1).getCell(2));
Cell cell = null; // declare a Cell object
DataValidation dataValidation = null;
DataValidationConstraint constraint = null;
DataValidationHelper validationHelper = null;
CellRangeAddressList addressList = new CellRangeAddressList(0,5,0,5);

//cell = worksheet.getRow(2).getCell(2); // Access the second cell in second row to update the value
DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(new String[]{"124", "20", "30"});
dataValidation = new HSSFDataValidation(addressList, dvConstraint);
dataValidation.setSuppressDropDownArrow(false);

worksheet.addValidationData(dataValidation);
// cell.setCellValue("OverRide Last Name"); // Get current cell value value and overwrite the value

fsIP.close(); //Close the InputStream

FileOutputStream output_file =new FileOutputStream(new File("D:\\template3.xls")); //Open FileOutputStream to write updates
wb.write(output_file); //write changes

output_file.close(); //close the stream

最佳答案

我不得不删除/编辑工作表中的 DataValidation 并且无法在任何地方找到答案,这就是我所做的。 (使用 apache-poi:3.14)

首先,除了阅读方面的问题,你不应该使用这种方法:

worksheet.getSheet("MySheet").getDataValidations()

它总是发送 DataValidation 的副本,因此编辑它们将无济于事。

我不得不接受这个:

worksheet.getSheet("MySheet").getCTWorksheet().getDataValidations().getDataValidationList()

然后您将能够使用 get/set/remove 方法从此处编辑或删除 DataValidation。

问候。

关于java - 使用 Apache POI 删除 HSSF 表的数据验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27962449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com