gpt4 book ai didi

java - Excel POI API 更改单元格值

转载 作者:行者123 更新时间:2023-11-30 04:51:37 25 4
gpt4 key购买 nike

我必须读取 Excel 文件并使用 Java 的 POI API 填充一些单元格。我将整个工作簿写到另一个工作簿中。这确实有效。

问题是(一旦填充了单元格)我必须打开文件并单击并输入我修改过的单元格,以便刷新其他公式单元格的值。

代码是这样的:

cellHorasPrevistas.setCellValue("01:00:00")

当我输入 xls 文件时,它似乎是一个原始字符串,而不是格式化为“[h]:mm:ss”(这是单元格的初始格式)。

我尝试过手动重写格式,但没有成功:

    HSSFCellStyle cs = wb.createCellStyle();
HSSFDataFormat df = wb.createDataFormat();
cs.setDataFormat(df.getFormat("[h]:mm:ss"));
cellHorasPrevistas.setCellStyle(cs);
cellHorasPrevistas.setCellValue("01:00:00")

我也尝试过,但没有运气

HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb); 
fe.clearAllCachedResultValues()
fe.notifyUpdateCell(cellHorasPrevistas)
fe.evaluate(cellHorasPrevistas)

我一定很简单,只需更改单元格值即可使该单元格与我在 xls 中手动更改的值相同。

提前致谢,劳尔

找到了部分解释......问题是 de CellType 正在从数字更改为字符串,因此 excel 无法在公式中使用它。我想保留数字格式,将值设置为“12:00:00”而不是 0.5。可能吗?

最佳答案

您可以尝试使用DateCalendar对象来设置值而不是字符串。您可能必须创建一个虚拟对象,它仅设置了适当的时间。

我必须将年份设置为 1970,月份设置为一月,日期设置为 1,才能使其像这样工作:

  HSSFWorkbook wb = new HSSFWorkbook();
HSSFRow row = wb.createSheet().createRow(0);
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setDataFormat(wb.getCreationHelper().createDataFormat().getFormat("HH:mm:ss"));
HSSFCell cell = row.createCell(1);
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 1970);
cal.set(Calendar.MONTH, 0);
cal.set(Calendar.DATE, 1);
//you can set the time you need here ...
cell.setCellValue(cal);
cell.setCellStyle(cellStyle);

结果:

enter image description here

如果我将 YEAR/MONTH/DATE 部分保留为正常,则时间将是自 1970 年 1 月 1 日以来的所有时间。

关于java - Excel POI API 更改单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9717009/

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