这是我的情况:我有简单的 Excel OOXML 文件 http://www.filedropper.com/excel_1通过 Web 查询连接到我的服务器。所有带有日期的单元格都具有“常规”水平对齐方式(无对齐方式)和 MM/DD/YYYY 格式。它看起来像这样:
使用非常简单的 HTML 刷新服务器响应:
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<style id="Leads_style">
table
{
mso-displayed-decimal-separator:"\.";
mso-displayed-thousand-separator:"\,";
}
.cs0 { mso-number-format:\@; }
.cs1 { mso-number-format:mm\/dd\/yyyy; }
</style>
</head>
<body>
<table id="tbl_0_Leads" x:publishsource="Excel">
<tr>
<td>Title:</td>
<td colspan="2" style="white-space:nowrap">Leads</td>
</tr>
<tr>
<td>Date:</td>
<td align="left" colspan="2">27 Aug 2014 08:02 AM +0:00 GMT</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<table id="tbl_3_Leads" x:publishsource="Excel">
<tr>
<td>Display Name</td>
<td>Created Date</td>
<td>Last Modified Date</td>
</tr>
<tr>
<td class="cs0" x:str="Darrow Mag, Mrs.">Darrow Mag, Mrs.</td>
<td class="cs1">04/23/2009</td>
<td class="cs1">08/06/2014</td>
</tr>
<tr>
<td class="cs0" x:str="q q, Prof.">q q, Prof.</td>
<td class="cs1">06/04/2014</td>
<td class="cs1">08/06/2014</td>
</tr>
<tr>
<td class="cs0" x:str="dasd dsa, Dr.">dasd dsa, Dr.</td>
<td class="cs1">06/16/2014</td>
<td class="cs1">08/06/2014</td>
</tr>
<tr>
<td class="cs0" x:str="Bouat Jerome, Dr.">Bouat Jerome, Dr.</td>
<td class="cs1">08/12/2014</td>
<td class="cs1">08/12/2014</td>
</tr>
</table>
</body>
</html>
请注意,样式部分中的 .cs1 类有mso-number-format:mm\/dd\/yyyy
,因此 Excel 文档中的所有日期应如下所示08/27/2014
.
For unknown reason, Excel applies wrong format (MM.DD.YYYY
) to date cells:
两个看似正常的细胞也有MM.DD.YYYY
格式,但 Excel 将其显示为MM/DD/YYYY
左对齐,因为 DD 值远大于 MM 值的最大值(是的,这也很奇怪)。
请帮忙。我究竟做错了什么?
好吧,我终于找到了解决方案。
由于未知原因,Excel 在从 HTML 检索刷新的数据时无法识别正确的 ISO 8601 格式。所有日期时间都应传入yyyy-MM-dd
/ yyyy-MM-dd HH:mm:ss
/ HH:mm:ss
格式正确mso-number-format
参数定义在styles
部分 (mso-number-format:"mm\\/dd\\/yyyy"
就我而言)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)