6

我在 C#.Net 中将数据导出到 Excel 工作表。我有一个列,其中包含“00123450098”之类的数据。导出的数据没有第一个零。我想按原样显示数据。

这是我的导出 excel 代码。

 string style = @"<style> .text { mso-number-format:\@; } </style> ";
    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.AddHeader(
        "content-disposition", string.Format("attachment; filename={0}", fileName));
    HttpContext.Current.Response.ContentType = "application/ms-excel";
    HtmlForm frm = new HtmlForm();
    ...................
    ...................
     table.RenderControl(htw);
            HttpContext.Current.Response.Write(style);
            //render the htmlwriter into the response
            HttpContext.Current.Response.Write(sw.ToString());
            HttpContext.Current.Response.End();
4

6 回答 6

20

在导出到 excel 时,\t在插入的值之前添加将解决问题。例如:

string test = "000456";
string insertValueAs = "\t" + test;

然后字符串测试将被视为字符串值而不是整数值。因此,它将保留前导零。

我遇到了同样的问题,上面的解决方案对我有用。希望这篇文章有帮助!

于 2013-05-31T12:13:33.500 回答
8

如果导出为 CSV / TSV,请将其放入每个包含文本“数字”的单元格中,该数字带有前导 0 或(尤其是)16 位以上的数字:

="0012345"

..其中 0012345 是您要导出到该单元格的数字。

我希望我能记得我在哪里看到的。

于 2012-12-04T17:37:16.960 回答
5

在 Excel 文件中,数字单元格总是去掉前导零,您可以通过单引号来设置带前导零的数字。IE

00123450098 至 '00123450098

但随后,该单元格的格式将更改为文本。如果您生成的 excel 文件有任何公式,其中包含该单元格引用作为数字,那么它将无法按预期工作。

于 2012-07-20T07:36:27.557 回答
4

我也有这个问题。我想出的解决方案是在使用 excel 的内置 char() 函数时隐藏前导零。在 excel 中,char() 返回传递给它的 ASCII 字符代码的值,因此 char(048) 返回 0。在导出到 excel 之前,像这样添加变量...

varName = "=CHAR(048)&" + varName;
于 2015-07-20T19:14:11.180 回答
2

我使用StackOverflow 链接博客的组合找到了我的答案。有一些 excel 格式样式可以应用于 rowdatabound 上的 gridview。我使用了这些,现在我的导出不会去掉前导零。

下面是我的代码示例。

ExpenseResultsGrid.RowDataBound += new GridViewRowEventHandler(ExpenseResultsGrid_RowDataBound);

        protected void AllQuartersGrid_RowDataBound(对象发送者,GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {//add this style to prevent truncating leading zeros in fund code during export to excel
                e.Row.Cells[2].Attributes.CssStyle.Add("mso-number-format", "\\@");
            }
        }
于 2017-08-29T00:27:24.200 回答
0

导出时,只需在插入的值之前添加一个空字符串,如“”:

string x = "000123";
myWorksheet.Cells[1,1] = "" + x;
于 2012-10-11T21:54:29.853 回答