C# 在c中执行导出到excel之前更改列的数据类型#

C# 在c中执行导出到excel之前更改列的数据类型#,c#,asp.net,gridview,export-to-excel,C#,Asp.net,Gridview,Export To Excel,我正在尝试将gridview导出到C#中的excel。但是有些列包含类似0005467的数据。因此,当我尝试将Gridview导出到Excel时,列中的数据将变为5467,因为它将此列视为数字而不是字符串。有时,当最后有很多0时,它将此数字视为指数。我不希望此列更改,因为这些是ID。 在将整个gridview导出到excel之前,是否有方法更改c#中选定列的数据类型 将Gridview导出到Excel的代码: Response.Clear(); Response.AddHeader("conte

我正在尝试将gridview导出到C#中的excel。但是有些列包含类似0005467的数据。因此,当我尝试将Gridview导出到Excel时,列中的数据将变为5467,因为它将此列视为数字而不是字符串。有时,当最后有很多0时,它将此数字视为指数。我不希望此列更改,因为这些是ID。 在将整个gridview导出到excel之前,是否有方法更改c#中选定列的数据类型

将Gridview导出到Excel的代码:

Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=" + fname + ".xls");
Response.Charset = "";
Response.ContentType = "application/vnd.xls";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
GridView1.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
我试过插入

Response.Write("<style> TD { mso-number-format:\@; } </style>"); 
Response.Write(“TD{mso编号格式:\@;}”);
在上面的代码中,但它不起作用


请帮忙

Hi如果要更改列的数据类型, 首先,您需要记住,如果表中已有数据,则无法更改该列的数据类型。因此,您可以先克隆该表,然后分配给另一个表(新表)。然后更改新表的数据类型,并将所有数据从第一个表复制到新创建的表中

这里有一个演示,对于相同的导出和导入excel,我使用这个

    using (OleDbConnection conn = new OleDbConnection(excelConnectionString))
    {
        conn.Open();
        OleDbCommand cmd = new OleDbCommand(query, conn);
        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
        //This is the initial table
        DataTable dtDetails = new DataTable();
        da.Fill(dtDetails);

        //This is the table for whom i need to change the datatype of columns
        DataTable dtCloned = dtDetails.Clone();
        dtCloned.Columns["myColumn1"].DataType = System.Type.GetType("System.String");
        dtCloned.Columns["myColumn2"].DataType = System.Type.GetType("System.String");

        //Copy all data from first table to this new table
        foreach (DataRow dr in dtDetails.Rows)
        {
            dtCloned.Rows.Add(dr.ItemArray);
        }

        GridProjectDetails.DataSource = dtCloned;
        GridProjectDetails.DataBind();

       //Then you can export this Grid
    }

尝试导出为csv格式而不是excel(.xls)

为此,您需要更改内容类型,请使用第2行的下线

Response.AddHeader(“内容处置”、“附件;文件名=“+fname+”.csv”)