在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!

+1

您使用XML,所以你的时间值不是数字。你应该把它们当作字符串。 Excel会将它们解析为正确的值。 – 2014-10-28 15:53:52

+0

@ jbarker2160它适用于Excel中的初始加载。之后,对时间的任何手动修改都会导致公式不会更新,并会将“:00”附加到时间上,从而改变其对齐方式。有任何想法吗? – TekiusFanatikus 2014-10-28 16:05:08

+0

你应该真的使用TIMEVALUE功能。这是该过程中的一个额外步骤,但Excel真的很难处理时间值。 – 2014-10-28 16:09:24

最终的解决方案:

ss:Formula="=ROUND(((R[-1]C-R[-2]C) * 24) - 0.5, 3)