gpt4 book ai didi

java - Apache POI 未正确格式化单元格

转载 作者:行者123 更新时间:2023-12-03 03:29:37 26 4
gpt4 key购买 nike

我目前在使用 Apache POI 时遇到一些问题。

我当前的项目是从 xml 文件中读取数据并将其写入 Excel 文件。excel 编写部分是使用 Apache POI 完成的,但我遇到了一个问题。当我尝试使用数据格式(“mm:ss,sss;@”)写入一些持续时间时,这意味着我以分钟为单位写入时间:秒,毫秒。

问题是,该数据的格式不正确,您无法在 Excel 中使用它。您可以在 Excel 中看到这一点,因为它是左对齐写入单元格的。但是,如果您单击 Excel 中的单元格并按 Enter 键,它就会右对齐,您就可以使用它了。

我使用以下代码来创建工作表和工作簿。

Workbook workbook = new HSSFWorkbook();
sheet1 = workbook.createSheet("Daten");
style = workbook.createCellStyle();
CreationHelper creationHelper = workbook.getCreationHelper();
style.setDataFormat(creationHelper.createDataFormat().getFormat("mm:ss,sss;@"));

以下方法用于将数据写入单元格。“分钟”、“秒”和“毫秒”是收集所需信息的原始编程方法。“cellcount”是行中应写入数据的位置。

public static void createCellTime(Row row, int cellcount, xmlInterface interface, Main main){
Cell cell = row.createCell(cellcount);
try {
String cellTimeStringTime = minutes + ":" + seconds + "," + milliseconds;
cell.setCellValue(cellTimeStringEchtzeit);
} catch (NullPointerException e) {
cell.setCellValue("-----");
}
cell.setCellStyle(main.style);
}

main.style Cellstyle 是在 main 方法中定义的样式,如第一个代码块所示。

如果您需要任何进一步的信息,请随时询问。

我希望有一个很好的解决方案,因为我当前的解决方法 - 单击每个单元格并按 Enter 键的工具 - 是一种糟糕的方法:)

最佳答案

格式代码中的s是秒的代码,而不是毫秒的代码。 Fractions of a second: h:mm:ss.00

此外,存储的格式字符串始终采用 en_US 格式。点 (.) 是十进制分隔符,与您的区域设置无关。所以你的格式代码应该是.getFormat("mm:ss.000")

也不要将字符串放入单元格中。使用DateUtil.convertTime从字符串中获取时间值并将该 double 值放入单元格中。

...
String cellTimeStringTime = "00:" + minutes + ":" + seconds;
double timeValue = DateUtil.convertTime(cellTimeStringTime);
double millisecValue = Double.parseDouble(""+milliseconds);
millisecValue = millisecValue / 24 / 60 / 60 / 1000;
timeValue += millisecValue;
cell.setCellValue(timeValue);
...

关于java - Apache POI 未正确格式化单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46467603/

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