Coldfusion电子表格设置数据格式(h:mm)

时间:2014-09-26 05:08:59

标签: excel coldfusion spreadsheet dataformat

我正在使用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 AM',因为我已格式化此单元格。

如果我输入具有相同值'8:30'的相同单元格,我再次单击该单元格。我可以看到插入功能框中的值是正确的,即'8:30:00 AM'。

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

感谢。

2 个答案:

答案 0 :(得分:1)

我认为代码本身并没有做错任何事。我认为单独使用基本的CF10功能是不可能的。 CF似乎隐式地正确处理日期/时间字符串,但不是“时间”字符串。使用the new datatype parameter可以在CF11中支持

解决方法是使用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)>

答案 1 :(得分:0)

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