gpt4 book ai didi

java - 使用 apache POI 限制 Excel 不使用 Java 中的操作系统默认日期格式

转载 作者:行者123 更新时间:2023-12-02 12:38:10 25 4
gpt4 key购买 nike

您好,我正在使用 Java 中的 apachePOI 生成 xls 文件。我有日期栏。现在的问题是 Excel 从默认操作系统设置中选择日期格式。

我有一个问题,我希望 Excel 始终选择 dd-mm-yyyy。但操作系统设置为 US 的系统,它会选择 mm-dd-yyyy。因此,像 17-2-2017 这样的有效日期在美国系统中会被视为无效,因为没有第 17 个月。

所以我的问题是我可以强制 Excel 使用我想要的日期格式吗?换句话说,我可以限制 Excel 不使用操作系统设置吗?如果不可能,我们将赞赏任何其他解决方法。谢谢。

代码:

private static void doCreate() throws FileNotFoundException, ParseException {

Workbook workbook;
Row row;
Sheet spreadsheet;

workbook = new HSSFWorkbook();
spreadsheet = workbook.createSheet("Order Details");

dateCellStyle = workbook.createCellStyle();
// LocaleUtil.setUserTimeZone(LocaleUtil.TIMEZONE_UTC);
// // Locale.setDefault();
// final String excelFormatPattern = DateFormatConverter.convert(Locale.JAPANESE, "dd MMMM, yyyy");
// // final DataFormatter dataFormatter = new DataFormatter(Locale.ENGLISH);
final short df = workbook.createDataFormat().getFormat("dd-mm-yyyy");
dateCellStyle.setDataFormat(df);

final String inputDate = "2017-10-24";

row = spreadsheet.createRow(0);
final Cell cell = row.createCell(0);

final Date creationDate = inputCreationDateFormat.parse(inputDate);
cell.setCellValue(outputCreationDateFormat.format(creationDate));
cell.setCellStyle(dateCellStyle);

final FileOutputStream out = new FileOutputStream(new File("Writesheet.xls"));
try {
workbook.write(out);
workbook.close();
} catch (final IOException e) {

}
System.out.println("Writesheet.xls written successfully");
}
}

最佳答案

发布的代码不完整,但单元格格式似乎被设置为 dd-mm-yyyy。

但是,代码采用日期:

Date creationDate = inputCreationDateFormat.parse(inputDate);

并将其转换为实际单元格值的其他类型(String?)。

cell.setCellValue(outputCreationDateFormat.format(creationDate));

相反,只需使用日期:

cell.setCellValue(creationDate);

这样 Excel 就可以将格式应用于日期值。

这是一个具有多种格式的示例:

public class XlsApp {
public static void main(String[] args) throws IOException {
XlsApp app = new XlsApp();
app.doCreate();
}

private void doCreate() throws IOException {
Workbook workbook = new HSSFWorkbook();

CellStyle mmddyyyy = workbook.createCellStyle();
mmddyyyy.setDataFormat(workbook.createDataFormat().getFormat("mm-dd-yyyy"));

CellStyle ddmmyyyy = workbook.createCellStyle();
ddmmyyyy.setDataFormat(workbook.createDataFormat().getFormat("dd-mm-yyyy"));

Sheet sheet = workbook.createSheet();
for (int r = 0; r < 10; r++) {
Date date = new Date(System.currentTimeMillis() - ThreadLocalRandom.current().nextInt());

Row row = sheet.createRow(r);

Cell cell = row.createCell(0);
cell.setCellStyle(mmddyyyy);
cell.setCellValue(date);

cell = row.createCell(1);
cell.setCellStyle(ddmmyyyy);
cell.setCellValue(date);
}

sheet.autoSizeColumn(0);
sheet.autoSizeColumn(1);

FileOutputStream out = new FileOutputStream(new File("c:\\temp\\test.xls"));
workbook.write(out);
workbook.close();
}

}

关于java - 使用 apache POI 限制 Excel 不使用 Java 中的操作系统默认日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45062202/

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