导出Excel:避免剥离前导零

时间:2012-07-20 07:31:31

标签: c#-4.0

我将数据导出到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();

6 个答案:

答案 0 :(得分:19)

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

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

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

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

答案 1 :(得分:6)

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

= “0012345”

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

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

答案 2 :(得分:4)

在Excel文件中,Numbers单元格始终剥离前导零,您可以通过跟随单引号设置前导零的数字。即。

  

00123450098至'00123450098

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

答案 3 :(得分:4)

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

varName = "=CHAR(048)&" + varName;

答案 4 :(得分:2)

我使用StackOverflow linkblog的组合找到了我的答案。 有一些excel格式样式可以应用于rowdatabound上的gridview。我使用了那些,现在我的导出不会删除前导零。

以下是我的代码示例。

ExpenseResultsGrid.RowDataBound += new GridViewRowEventHandler(ExpenseResultsGrid_RowDataBound);

        protected void AllQuartersGrid_RowDataBound(object sender, 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", "\\@");
            }
        }

答案 5 :(得分:0)

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

string x = "000123";
myWorksheet.Cells[1,1] = "" + x;