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