java - Apache POI 奇怪的数字格式

标签 java apache-poi

我正在尝试使用 apache poi 将 xls 和 xlsx 文件转换为 csv,但遇到了某种问题,我不知道如何解决。基本上,当单元格包含大数字时,代码会将该数字输出为奇怪的格式。

for (int cn = 0; cn < lastColumn; cn++) {
    Cell c = r.getCell(cn);
    if (c == null) {
        sb.append("|");
    } else {
        sb.append(c + "|");
    }
}

示例:

电子表格在一个单元格中包含此数字:84172870494

输出是这样的:8.4172870494E10

所需输出:84172870494

基本上它添加了一个“。”末尾是“E%”。

最佳答案

您必须定义格式才能告诉 POI 如何解析数据。

DataFormat format = wb.createDataFormat();
CellStyle style = wb.createCellStyle();
style.setDataFormat(format.getFormat("#.###############"));
cell.setCellStyle(style);

并检查 xls 格式:

https://poi.apache.org/components/spreadsheet/quick-guide.html#DataFormats https://support.microsoft.com/en-us/help/264372/how-to-control-and-understand-settings-in-the-format-cells-dialog-box

关于java - Apache POI 奇怪的数字格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56528030/

相关文章:

java - 如何使用 POI-3.2-FINAL 将日期格式样式应用于 Excel 中的一列?

java - 读取 CSV 记录,同时忽略尾随空格

Java - 这个变量初始化代码有什么问题?

java - 上传word文档

java - 如何在 Grails 2.3.11 中安装 Apache POI

java - (初学者)SQLite 查询不会使用 MoveToNext 进入 if-loop

java - 无法理解如何合并 POI 中的行

java - 左侧导航菜单 :Liferay 6. 2

java - 删除引号内的文本

java - 为什么我的 ChangeListener 只对 JMenu 有反应,而不对 JMenuItem 有反应?