日期:2014-05-19  浏览次数:20882 次

微软不认识杜甫?
把Datagrid中的数据导出为EXCEL时出现乱码

找了N天原因,才发现原来是有个人名字叫“杜甫”(变态,干吗起这个名字)

把这个名字改成其他的,就正常……

(什么utf-7   utf-8统统试过了,都是乱码)

兄弟们导出数据时碰到过带“甫”的字没?怎么搞定的?

------解决方案--------------------
是这个原因吗?甫 有不是什么生僻字
我没遇到过
帮顶
------解决方案--------------------
这也搞笑了吧
------解决方案--------------------
啥事都有啊
------解决方案--------------------
高人啊,这个问题都让你碰到了。
gb2312 试过没?
------解决方案--------------------
还有这事情?我测试一下
------解决方案--------------------
这个比较搞笑,属于特例加以推广
------解决方案--------------------


刚刚经过 我测试了 导出到 Excel 后能显示 杜甫..一点错误都没有啊

3 杜甫 男 江海通 4.201E+17 1956-4-30 0:00
4 杜甫 男 航道局 4.30425E+17 1974-4-18 0:00
5 杜甫 男 个体 5.10232E+17 1970-3-21 0:00
6 廖中建 男 重庆长航 5.10212E+17 1963-9-23 0:00
7 黄绪刚 男 长航交科 3.20108E+14 1974-10-11 0:00

===========微软怎么会 犯这么低级的错误..

------解决方案--------------------
我测试也米问题 测试代码如下
try
{
string strCmd = string.Empty;
conn = new OleDbConnection(@ "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties= 'Excel 8.0;HDR=No '; " + "Data Source= " + @ "C:\Documents and Settings\Administrator\桌面\test.xls ");
cmd = new OleDbCommand();
cmd.Connection = conn;


conn.Open();
strCmd = "create Table [Sheet1]( ";
foreach (DataColumn dc in ds.Tables[0].Columns)
{
strCmd += "[ " + dc.ColumnName + "] nvarchar(20), ";
}
strCmd = strCmd.Trim().Substring(0, strCmd.Length - 1);
strCmd += ") ";
cmd.CommandText = strCmd;

cmd.ExecuteNonQuery();

foreach (DataRow dr in ds.Tables[0].Rows)
{
if (dr.RowState != System.Data.DataRowState.Deleted)
{
strCmd = "insert into [Sheet1] values( ";
foreach (DataColumn dc in ds.Tables[0].Columns)
{
strCmd += " ' " + dr[dc.ColumnName].ToString() + " ', ";
}

strCmd = strCmd.Substring(0, strCmd.Length - 1);
strCmd += ") ";

cmd.CommandText = strCmd;

cmd.ExecuteNonQuery();


}
}
conn.Close();
}
catch (Exception ex)
{
throw ex;
}
}
------解决方案--------------------
杜甫——没有问题啊。。。。。。。。奇怪了~~
------解决方案--------------------
楼上说的是真的
------解决方案--------------------
杨杨说的是真的
------解决方案--------------------