【问题标题】:Zip code is dropping leading zero when displayed on excel. Export to excel from vb.net XML to XSLT transform邮政编码在 Excel 上显示时前导零。从 vb.net XML 导出到 Excel 到 XSLT 转换
【发布时间】:2011-03-30 16:19:54
【问题描述】:

我正在将数据从 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 软件

【问题讨论】:

  • 这是因为它是一个数字字段,而 Excel 会从其中去除前导零。您必须将其存储为文本,但除了使用前导 ' 我不确定您将如何做到这一点。
  • 好吧,邮政编码是我数据库中的一个字符串字段,并作为字符串导出到 Excel。我还在想

标签: xml vb.net xslt export export-to-excel


【解决方案1】:

转到您正在处理的单元格。右键单击,单击格式单元格,然后测试。输入带有前导零的数字,它将保留。

【讨论】:

  • 实际上不会,这并不能解决问题
【解决方案2】:

我在通过 PHP 导出到 Excel 时遇到了这个问题。我发现在等号前面加上双引号将 zip 括起来会导致 Excel 保留前导零。

我不知道 vb.net,但在 PHP 中看起来像这样:

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

【讨论】:

    【解决方案3】:

    使用

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

    它将保留Leading zeros

    【讨论】:

    • Enggr - 我知道为时已晚,只是想更新你。上面的代码你试过了吗?
    【解决方案4】:

    如何通过 xsl 格式化数字? 看http://www.w3schools.com/xsl/func_formatnumber.asp

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

      • 好吧,邮政编码是我数据库中的一个字符串字段,并作为字符串导出到 Excel。我还在想。我也不使用excel互操作。它只是一个 response.contenttype 而不是一个 excel 互操作 API。我们也无法在客户端控制 excel 实例的属性。请帮忙
      猜你喜欢
      • 2016-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      相关资源
      最近更新 更多