java - JExcelAPI - 将日期写入 Excel 工作表会忽略日、月和年

标签 java excel datetime jexcelapi

我尝试使用 JExcelAPI (v. 2.6.3) 在 Java 应用程序中生成一些 Excel 工作表,但无法正确生成日期单元格。例如,对于代码:

WritableWorkbook workbook = null;
    workbook = Workbook.createWorkbook(new File("C:\\tmp\\tests.xls"));
    try {
        Date date = new Date();
        final WritableSheet sheet = workbook.createSheet("Sheet", 0);
        DateTime dateTime = new DateTime(0, 0, date);
        sheet.addCell(dateTime);
        System.out.println("Date1 is " + date);
        final Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, 2007);
        cal.set(Calendar.MONTH, Calendar.OCTOBER);
        cal.set(Calendar.DAY_OF_MONTH, 17);
        cal.set(Calendar.HOUR_OF_DAY, 8);
        cal.set(Calendar.MINUTE, 15);
        date = cal.getTime();
        dateTime = new DateTime(0, 1, date);
        sheet.addCell(dateTime);
        System.out.println("My birthday is on " + date);
    } finally {
        workbook.write();
        workbook.close();
    }

输出(在控制台上)是:
日期 1 是 Mon Jun 08 11:14:45 GMT+01:00 2009
我的生日是 2007 年 10 月 17 日星期三 08:15:45 GMT+01:00

在 Excel 文件中,单元格是
1900-01-00 10:14:46
1900-01-00 07:15:46

Excel 中的时间部分被更正为 UTC,日期部分被丢弃。虽然引用文献提到了时区问题,但它没有提到丢弃日期。我做错了什么?

最佳答案

好的。我想通了。创建日期格式

DateFormat customDateFormat = new DateFormat ("dd MMM yyyy hh:mm:ss");
WritableCellFormat dateFormat = new WritableCellFormat (customDateFormat); 

并将其传递给 DateTime 构造函数

DateTime dateTime = new DateTime(0, 0, date, dateFormat);

修复它。似乎默认情况下只采用时间部分。对不起我的愚蠢。

关于java - JExcelAPI - 将日期写入 Excel 工作表会忽略日、月和年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/964055/

相关文章:

java - 从个人部门迁移到对齐规则

python - 如何将图像矩阵(来自 opencv)保存到 xlsx 文件?

c# - 保存后 Microsoft Excel 下拉列表消失了吗?

c# - 是否有可以处理从现在到公元前 12,000 年的日期的 C# 日期时间库?

java - DTO、VO、POJO、JavaBean 之间的区别?

java - 为什么 apache 执行我的 shell 脚本中的所有命令而不是 java 的命令?

java - JFrame 和 ActionListener

sql-server - 通过不返回行的VBA执行SQL Server存储过程

c# - 记录和计算时间的方法是什么?

python - 如何从 Pandas 数据框中查找最近 24 小时的数据