将数据从DataTable导出到Excel 2007

时间:2013-03-01 16:40:49

标签: c# asp.net export-to-excel

数据表的值是

斯大林 - 001和迈克尔--002。但生成excel我得到输出

enter image description here

生成excel时,“0”不会出现。如何解决这种类型的场景。

代码:

if (dt.Rows.Count > 0)
{
    string filename = " ExportedData.xls";
    System.IO.StringWriter tw = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
    DataGrid dgGrid = new DataGrid();
    dgGrid.DataSource = dt;
    dgGrid.DataBind();

    dgGrid.RenderControl(hw);       
    Response.ContentType = "application/vnd.ms-excel";
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "");
    this.EnableViewState = false;
    Response.Write(tw.ToString());
    Response.End();
}

3 个答案:

答案 0 :(得分:0)

这不是您的代码的问题。 这是你的excel配置隐藏前缀零的问题。

1.在“工具”菜单上,单击“选项”,然后单击“视图”选项卡。

2.执行以下操作之一:

要在单元格中显示零(0)值,请选中“零值”复选框。

要将零值显示为空白单元格,请清除该复选框。

答案 1 :(得分:0)

在将数据表链接到数据网格之前,您可以在数据表中手动设置列的内容类型。

DataTable dt = new DataTable();
dt.Columns.Add();
dt.Columns[0].DataType = typeof(string);

答案 2 :(得分:0)

您可以将DataTable中的数据存储/更新为以下格式: =“001”

示例:

        DataTable dt = new DataTable();
        dt.Columns.Add("A");
        dt.Columns.Add("B");

        dt.Rows.Add(new object[] { "Name", "No" });
        dt.Rows.Add(new object[] { "Stalin", "=\"001\""});
        dt.Rows.Add(new object[] { "Micheal", "=\"002\"" });