以下是读取Excel的一段代码,但是在英文操作系统中,读取Excel的时候,如果Excel中含有中文,读取的结果就会是乱码?我估计是编码的问题,但是不知道在这段代码中如何设置编码?excel的连接字符串中能否设置编码类型(UTF-8)?或者能否在Excel文件上手动设置文件的编码类型?如何设置?
public class ExcelReader
    {
        public static string connectionString = @"Provider=Microsoft.ACE.OLEDB.4.0;Data Source=excelPath;Extended Properties=""Excel 12.0;HDR=YES;""";        /// <summary>
        /// Query excel and return dataset results
        /// </summary>
        /// <param name="connectionString">Excel connection string</param>
        /// <param name="commandString">query command string, for example:"SELECT ID,userName,userAddress FROM [Sheet1$]" </param>
        /// <returns></returns>
        public static DataSet GetExcelDataSet(string connectionString, string commandString)
        {
            DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");            DbDataAdapter adapter = factory.CreateDataAdapter();            DbCommand selectCommand = factory.CreateCommand();
            selectCommand.CommandText = commandString;            DbConnection connection = factory.CreateConnection();
            connection.ConnectionString = connectionString;            selectCommand.Connection = connection;
            adapter.SelectCommand = selectCommand;            DataSet dataSet = new DataSet();
            adapter.Fill(dataSet);            connection.Close();
            return dataSet;
        } 
    }

解决方案 »

  1.   

    英文操作系统中直接双击打开Excel文件里面显示的中文是正常的吗?
    上面代码中调试一下看到DataTable里的中文是乱码?
      

  2.   

    直接双击打开Excel文件中文显示正常;
    本地.net 4.0 含有中、英文字符集的机子,调试取到的DataTable显示汉字正常,存入数据库也正常;
    发布到服务器后,无法调试,存入数据库后汉字为乱码(nvarchar类型),为了测试,读取到DataTable后,直接在页面Response.Writeline()汉字的那个字段,页面输出为乱码。
      

  3.   

    试下这个看下行不http://blog.csdn.net/ssqmeng/article/details/3223911