当前位置: 首页 > 面试题库 >

如何将单元格值设置为“日期”并应用默认的Excel日期格式?

江亮
2023-03-14
问题内容

我已经使用Apache POI一段时间来以编程方式读取现有的Excel
2003文件。现在,我有一个新的要求,即在内存中创建整个.xls文件(仍然使用Apache
POI),然后将它们最后写入文件中。困扰我的唯一问题是带日期的单元格的处理。

考虑以下代码:

Date myDate = new Date();
HSSFCell myCell;
// code that assigns a cell from an HSSFSheet to 'myCell' would go here...
myCell.setCellValue(myDate);

当我将包含此单元格的工作簿写到文件中并用Excel打开它时,该单元格将显示为数字。是的,我确实意识到Excel将其“日期”存储为自1900年1月1日以来的天数,这就是单元格中所代表的数字。

问题:我可以在POI中使用什么API调用来告诉它我希望将默认日期格式应用于日期单元格?

理想情况下,如果用户手动在Excel中打开电子表格并输入Excel认为是日期的单元格值,则我希望使用与Excel为其分配的默认日期格式相同的默认日期格式显示电子表格单元格。


问题答案:

http://poi.apache.org/spreadsheet/quick-
guide.html#CreateDateCells

CellStyle cellStyle = wb.createCellStyle();
CreationHelper createHelper = wb.getCreationHelper();
cellStyle.setDataFormat(
    createHelper.createDataFormat().getFormat("m/d/yy h:mm"));
cell = row.createCell(1);
cell.setCellValue(new Date());
cell.setCellStyle(cellStyle);


 类似资料:
  • 我将客户数据转换成DB表,其中Varchar列类型中的几个单元格值包含date,而不包含date。包含特定格式的日期的文件需要转换为另一个文件,以便进一步用于数据分析作业。我尝试了下面的查询,但它显示了没有日期的单元格的错误。我如何解决这个问题? 基本上,我想去掉实际时间,加上000000来代替实际时间和日期。 查询: 错误: 代码:1292截断了不正确的日期时间值:“EVN”

  • 第一次使用Oracle SQL(我习惯使用MySQL)。我发现关于默认日期格式的信息有冲突。在多次尝试使用INSERT IN my\u table语句的to\u DATE之后,我终于找到了我正在使用的数据库expects DD-MON-YY(即2018年1月25日)。然而,在stackoverflow和其他地方的不同页面上,我看到一些人说默认值是YYYYMMDD或DD/MM/YYYY或YYYY-M

  • 对于以及所有那些Joda日期和时间容器,必须有某种方法来更改它。 我刚刚在中找到了方法,但我并不真正知道如何使用它。

  • 我在一个JSON文件中记录一些东西,我有一个datetime对象,我把它转换成一个字符串,这样我就可以在JSON中记录它(它不接受datetime对象)。 我的问题是如何将datetime字符串转换回datetime对象。我知道strptime,我只是不知道什么格式会使它与其他datetime.now对象兼容。 每当我尝试使用strtime时,我都会使用格式,并出现以下错误: 那么,默认datet

  • 问题内容: 我正在使用Apache POI库读取Excel文件。我在读取密码单元时被卡住了。如果用户在密码单元格中输入日期作为密码,即16/05/2012。我正在将此值读取为“ 41045”,而该值应为“ 16/05/2012”。这是我的代码: 有人可以帮忙吗? 谢谢。 问题答案: 您在POI中寻找的类是DataFormatter 当Excel写入文件时,某些单元格将存储为文字字符串,而另一些单元

  • 我无法设置日期格式。接受作为参数。所以我创建了一个新的 它说below Date()方法不推荐使用,并且我在运行时得到below异常。 例外情况: 我的数据库的日期格式为-2012-02-16T00:00:00.000-0500我需要将它转换为格式为:dd-MMM-yyyy HH:MM:SS的字符串 我正在使用Java6