首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#获取excel表名是乱码(汉语部分变成问号)

2013-09-11 
C#获取excel表名是乱码(中文部分变成问号)。代码是: using (OleDbConnection conn new OleDbConnection(

C#获取excel表名是乱码(中文部分变成问号)。
代码是:
 using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0";Data Source=" + excelFileName))
                    {
                        conn.Open();
                        DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {

                            string mc = dt.Rows[i][2].ToString().Trim();
                           
                              
                        }

                        conn.Close();
                    }

我的表名是:“1样式二”获得的表名却是:1???   ,但是我的马excel打开再保存一次他又不会出现乱码了。
麻烦大家帮个忙,谢谢了。。。
[解决办法]
我用下面这种方式取,是正常的,你可以试试:
                //获取EXCEL表中的SHEET名称
                DataTable dtExcelSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,


                                                          new object[] { null, null, null, "TABLE" });

                for (int i = 0; i < dtExcelSchema.Rows.Count; i++)
                {
                    SheetName = dtExcelSchema.Rows[i]["TABLE_NAME"].ToString();
[解决办法]
文字编码的问题,C#默认采用unicode编码。而中文系统产生的文件一般是GB2132编码 也可以用编码转换函数 转换一下就好
[解决办法]
我亲自试了一下,因为我用的是 Excel 2010 的,连接字符串有点区别,但是没有你说的问题,而且我的系统是英文版的。


using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties="Excel 12.0;HDR=YES";Data Source="C:\\Users\\youz\\Desktop\\survivers.xlsx""))
{
    conn.Open();
    DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        string mc = dt.Rows[i][2].ToString().Trim();
        Console.WriteLine(mc);
    }

    conn.Close();
}

// 输出结果:(没有出现'?')
1样式表
survivers

[解决办法]
excel哪里来的,是不是标准的excel文件,网上很多生成excel的方法并不是标准的excel格式的文件
[解决办法]
看看 java 生成的地方用的什么编码
[解决办法]
可以采用读取Access的方式读取excel中的数据
首先添加System.Data.OleDb引用

参考下:http://www.it165.net/pro/html/201206/2815.html

热点排行