在Excel中抽取时间值XML
问题描述:
我试图减去两次并以小时为单位获取该值。在Excel中抽取时间值XML
障碍:
- 它似乎是我需要指定一个完整的日期,我不能简单地用一个时间?
- 在另一个例子中,如果我用一个完整的日期(即2014-08-22T08:30:00),在Excel中我看到“41875.35”位于小区代替日期
这里是我的当前的标记:
<?xml version="1.0"?>
<ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
<ss:Worksheet ss:Name="Sheet1">
<ss:Table>
<ss:Row>
<ss:Cell>
<ss:Data ss:Type="DateTime">08:30:00</ss:Data>
</ss:Cell>
</ss:Row>
<ss:Row>
<ss:Cell>
<ss:Data ss:Type="DateTime">17:30:00</ss:Data>
</ss:Cell>
</ss:Row>
<ss:Row>
<ss:Cell ss:Formula="=INT((R[-1]C-R[-2]C)*24)"></ss:Cell>
</ss:Row>
</ss:Table>
</ss:Worksheet>
</ss:Workbook>
错误我越来越:
XML ERROR in Table
REASON: Bad Value
FILE: C:\timediff.xml.xls
GROUP: Cell
TAG: Data
VALUE: 08:30:00
XML ERROR in Table
REASON: Bad Value
FILE: C:\timediff.xml.xls
GROUP: Cell
TAG: Data
VALUE: 17:30:00
更新#1
最新切口:
<?xml version="1.0"?>
<ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
<ss:Worksheet ss:Name="Sheet1">
<ss:Table>
<ss:Row>
<ss:Cell>
<ss:Data ss:Type="String">08:30</ss:Data>
</ss:Cell>
</ss:Row>
<ss:Row>
<ss:Cell>
<ss:Data ss:Type="String">17:30</ss:Data>
</ss:Cell>
</ss:Row>
<ss:Row>
<ss:Cell ss:Formula="=round((timevalue(R[-1]C) - timevalue(R[-2]C)) *24, 1)"></ss:Cell>
</ss:Row>
</ss:Table>
</ss:Worksheet>
</ss:Workbook>
问题仍然存在,一旦在Excel中,改变08:30至8时15分,该公式将指示错误:#VALUE!
答
最终的解决方案:
ss:Formula="=ROUND(((R[-1]C-R[-2]C) * 24) - 0.5, 3)
您使用XML,所以你的时间值不是数字。你应该把它们当作字符串。 Excel会将它们解析为正确的值。 – 2014-10-28 15:53:52
@ jbarker2160它适用于Excel中的初始加载。之后,对时间的任何手动修改都会导致公式不会更新,并会将“:00”附加到时间上,从而改变其对齐方式。有任何想法吗? – TekiusFanatikus 2014-10-28 16:05:08
你应该真的使用TIMEVALUE功能。这是该过程中的一个额外步骤,但Excel真的很难处理时间值。 – 2014-10-28 16:09:24