1

我正在使用 Coldfusion 10,并且我有一个测试代码来创建电子表格并将值“8:30”的列格式化为“h:mm”。代码如下:

<cfset sObj = spreadsheetNew("true")>

<CFSET SpreadsheetFormatCell(sObj,{dataFormat="h:mm", alignment="right"}, 1, 2)>

<CFSET timehmm =  "8:30">
<cfset spreadsheetSetCellValue(sObj,"#timehmm#", 1, 2)>

<cfset SpreadSheetSetColumnWidth(sObj, 2, 11)>

<cfspreadsheet action="write" name="sObj" filename="..\TEST.xlsx" overwrite="true">

<cflocation url="EXCEL/TEST.xlsx" addtoken="no">

问题是,在 excel 文件中,我单击值为 8:30 的列,插入函数输入框中显示的值是 8:30,它应该是“上午 8:30:00”,因为我已经格式化了细胞。

如果我在同一个单元格中输入相同的值“8:30”,然后再次单击该单元格。我可以看到插入功能框中的值是正确的,即“上午 8:30:00”。

请帮助指出我的代码有什么问题,因为我需要将此格式设置为单元格,以便以后总结。目前,该单元格似乎已被识别为文本格式并且不能求和。

谢谢。

4

2 回答 2

1

我不认为代码本身做错了什么。我只是认为仅靠基本的 CF10 功能是不可能的。CF 似乎正确地隐式处理日期/时间字符串,但不是“时间”字符串。CF11可能支持它,使用datatype参数

一种解决方法是使用 POI DateUtil类将时间字符串转换为 Excel 可以解释的数值。注意:时间字符串必须使用 24 小时制

<cfset sObj = spreadsheetNew("true")>
<cfset util = createObject("java", "org.apache.poi.ss.usermodel.DateUtil")>

<cfset SpreadsheetFormatCell(sObj,{dataFormat="h:mm"}, 1, 2)>
<cfset timeValue = util.convertTime("8:30")>
<cfset spreadsheetSetCellValue(sObj, timeValue, 1, 2)>
于 2014-09-26T20:41:02.853 回答
0

根据文档,h:mm AM/PM 是与 h:mm 不同的格式。你试过h:mm AM/PM吗?

于 2014-09-26T10:31:30.437 回答