gpt4 book ai didi

java - Apache POI 日期区域设置问题

转载 作者:行者123 更新时间:2023-12-01 07:51:04 30 4
gpt4 key购买 nike

如果不使用 Apache POI(例如,手动生成 xml 来创建电子表格),您可以使用

设置 css 类
mso-number-format: "General Date"

mso-number-format: "Short Date"

使用 Apache POI,这似乎不可能,您被锁定使用单一定义的日期格式,该格式始终依赖于物理服务器的区域设置或您硬编码的某些值,而不是像上面那样依赖于客户端操作系统区域设置。

现在这是我的代码,用户访问美国的服务器但居住在另一个国家/地区希望查看其语言环境中的日期,因此这不好

    protected CellStyle getDateCellStyle(SXSSFWorkbook wb)
{
CellStyle style = wb.createCellStyle();
style .setDataFormat(wb.getCreationHelper().createDataFormat().getFormat("MM/dd/yyyy"));
return style;
}

本质上我想用“短日期”或“一般日期”替换“MM/dd/yyyy”,但这些选项不起作用。有人有主意吗?我不能仅仅根据服务器所在的位置获取区域设置,因为另一个国家/地区可能会访问它(因此我无法按照其他答案的建议获取 Java src 中的区域设置)。

有人处理过这个问题吗?

最佳答案

在 Excel 中,有一些内置数据格式没有明确的数据格式字符串。其中之一是“日期”,数字格式 ID 为 14。

此格式在 Excel 中的显示方式取决于 Excel 语言版本和 Windows 系统的区域设置。 en_US Excel 将显示m/d/yy。 en_GB Excel 将显示 dd/mm/yyyy。 de_DE Excel 将显示 dd.mm.yyyy...

所以如果这是需要,那么使用

style.setDataFormat((short)14);

还有更多内置数字格式。请参阅https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/BuiltinFormats.html 。但并非所有版本都适用于所有语言的所有 Excel 版本。但默认的货币格式(5、6、7、8)大多数情况下也可以使用。

示例:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;


class BuiltInFormats {

public static void main(String[] args) {
try {

Workbook wb = new XSSFWorkbook();

CellStyle builtInShortDate = wb.createCellStyle();
builtInShortDate.setDataFormat((short)14);
CellStyle builtInCurrency = wb.createCellStyle();
builtInCurrency.setDataFormat((short)8);

Sheet sheet = wb.createSheet();

Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue(new java.util.Date());
cell.setCellStyle(builtInShortDate);

row = sheet.createRow(1);
cell = row.createCell(0);
cell.setCellValue(1234.56);
cell.setCellStyle(builtInCurrency);

FileOutputStream os = new FileOutputStream("BuiltInFormats.xlsx");
wb.write(os);
os.close();

} catch (IOException ioex) {
}
}
}

关于java - Apache POI 日期区域设置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37706482/

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