阅读中文输出为Excel时

我正在使用oracle数据库和asp.net 2013 ..

下面的代码是我如何将数据从数据库导出到Excel文件。

private DataTable GetData(string sqlcommand) { try { string sapno = "SAP NO"; string partno = "PART NO"; string partdesc = "PART DESCRIPTION"; string minQty = "MINIMUM QUANTITY"; string QOH = "QUANTITY ON HAND"; string category = "CATEGORY"; string equipment = "EQUIPMENT"; readdata.selectdata(ds, sqlcommand); DataTable dt = ds.Tables[0]; dt.Columns[0].ColumnName = sapno; dt.Columns[1].ColumnName = partno; dt.Columns[2].ColumnName = partdesc; dt.Columns[3].ColumnName = minQty; dt.Columns[4].ColumnName = QOH; dt.Columns[5].ColumnName = category; dt.Columns[6].ColumnName = equipment; ds.Tables.Clear(); return dt; } catch (Exception ex) { throw ex; } } protected void btnDownload_Click(object sender, EventArgs e) { //Get the data from database into datatable string sqlcommand=null; if (validate.isEmpty(txtPartNo.Text) == true || Session["SAPNOIR"] ==null) { sqlcommand = "SELECT SAPNO , PARTNO, PARTDESC, MINQTY, QOH , CATEGORY, EQUIPMENT FROM INVENTORY"; } else { sqlcommand = "SELECT SAPNO, PARTNO, PARTDESC, MINQTY, QOH , CATEGORY, EQUIPMENT FROM INVENTORY WHERE SAPNO = '" + Session["SAPNOIR"] + "'"; Session["SAPNOIR"] = null; } DataTable dt = GetData(sqlcommand); //Create a dummy GridView GridView GridView1 = new GridView(); GridView1.AllowPaging = false; GridView1.DataSource = dt; GridView1.DataBind(); Response.Clear(); Response.Buffer = true; Response.AddHeader("content-disposition", "attachment;filename=DataTable.xls"); Response.Charset = ""; Response.ContentType = "application/vnd.ms-excel"; StringWriter sw = new StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(sw); for (int i = 0; i < GridView1.Rows.Count; i++) { //Apply text style to each Row GridView1.Rows[i].Attributes.Add("class", "textmode"); } GridView1.RenderControl(hw); //style to format numbers to string string style = @"<style> .textmode { mso-number-format:\@; } </style>"; Response.Write(style); Response.Output.Write(sw.ToString()); Response.Flush(); Response.End(); } 

当我打开excel文件时,所有汉字将变成不可读的字符。 任何人都知道我如何显示中文字符时,出口到Excel文件!

我尝试在我的web.config中添加编码窗口1250,但它仍然无法正常工作。 任何人都请帮忙。 谢谢

感谢您的评论是build议! 它非常appreaciated!

我找出原因。 所有进入excel的数据必须先进行编码,否则计算机会直接通过。

添加下面的代码,然后问题解决!

 Response.ContentEncoding = System.Text.Encoding.Unicode; Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());