邮政编码在Excel中显示时会丢失前导零。从vb.net XML导出到Excel需要进行XSLT转换。

3

我正在从vb.net导出数据到excel,但是当它在excel中显示时,前导零会被删除。我该如何避免删除前导零?我阅读了添加单引号的解决方案,但这会使我的Excel表格列变得丑陋。而且,如果在邮政编码字段上看到单引号,用户会抱怨。

以下是vb.net代码:

Response.AddHeader("content-disposition", attachment)
        Response.ContentType = "application/vnd.ms-excel"
        Response.Charset = ""

存储过程输出XML,然后通过XSLT进行转换,最终在EXCEL上显示。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <HTML>
      <HEAD>
        <STYLE type="text/css"> TABLE{table-layout: automatic; width:100%} .tblHeader{background-color:RGB(192,192,192);font-weight:bold} .row1{background-color:RGB(204,204,255)} .row2{background-color:RGB(153,204,255)} </STYLE>
      </HEAD>
      <BODY>
        <TABLE border="1">

          <THEAD>
            <tr class="tblHeader">
              <xsl:for-each select="*/*[1]/*">
                <td>
                  <xsl:value-of select="."/>
                </td>
              </xsl:for-each>
            </tr>
          </THEAD>

          <TBODY>
            <xsl:for-each select="ClientArray/Client">
              <TR>

                <xsl:for-each select="*">
                  <TD>
                    <xsl:value-of select="."/>
                  </TD>
                </xsl:for-each>

              </TR>
            </xsl:for-each>

          </TBODY>
        </TABLE>
      </BODY>
    </HTML>

  </xsl:template>
</xsl:stylesheet>

请帮我提供一种解决方法,除了添加单引号或使用列格式化(通用/数字)等操作Excel表格之外。我不希望用户对Excel进行任何更改以正确显示内容。当从网页显示Excel时,应该已经设置好了适当的格式。而且我们无法控制客户端Excel软件。

1
这是因为它是一个数字字段,Excel会从中删除前导零。你必须将其存储为文本,但除了使用前导'之外,我不确定你该如何做到这一点。 - ChrisF
好的,邮政编码是我的数据库中的一个字符串字段,并且以字符串形式导出到Excel。我还在思考中。 - Enggr
请参见https://dev59.com/1XVC5IYBdhLWcg3w9GA9,该链接涉及Excel CSV数字单元格格式的问题。 - Mark Ransom
5个回答

1

使用

<TD style="mso-number-format:\@;">

它将保留前导零


我知道现在已经太晚了,只是想更新一下你。你试过上面的代码了吗? - Arun Singh

1

Excel中的数字单元格会自动去除前导零。为了保留前导零,您需要将单元格数据设置为文本[通过在邮政编码前添加撇号实现]。

我不经常使用Excel Interop,所以无法告诉您如何准确地将单元格数据类型设置为文本,但我可以向您保证这是解决问题的方法。


1
好的,邮政编码是我的数据库中的字符串字段,并作为字符串导出到Excel。我仍然在想。我也不使用Excel互操作性。它只是一个response.contenttype,而不是Excel互操作API。此外,我们无法控制客户端Excel实例的属性。请帮忙。 - Enggr

1

我在使用PHP导出Excel时遇到了这个问题。我发现在ZIP前面加上等号并用双引号括起来,可以让Excel保留前导零。

我不懂vb.net,但在PHP中,代码应该是这样的:

echo '="' . $the_zip_code . '"';

0

-2

前往您正在工作的单元格。右键单击,点击格式单元格,然后测试。输入带有前导零的数字,它将保留。


1
实际上这并不会,也没有解决问题。 - James Jenkins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接