以下是读取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;
}
}
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;
}
}
解决方案 »
- 序列化将两个数组分次保存进一个文件。读取出问题。希望高手解答。
- webBrowser怎样禁用IE打开页面?e.Cancel = true;没效果呢!
- 关于messagebox窗口的问题,请高手进来解答下,谢谢了!
- 怎么编写纯资源Dll,以及如何调用(C#)
- pictuerBox对相对路径支持的不好吗?
- 急!!!!! 打印机为什么出白单???急!!!!!
- 光标离开Listview的动作用什么事件??
- DEV的gridview控件,如何能在单元格中回车后作数据库查询?
- 极度郁闷,关于递归生成TreeView的问题 ——高分求解!
- Microsoft.VS.NET.2k3.Enterprise.Architect.CHS(7cd最新版)下载地址!
- DataGridView的问题
- C# snmp SnmpSharpNet问题
上面代码中调试一下看到DataTable里的中文是乱码?
本地.net 4.0 含有中、英文字符集的机子,调试取到的DataTable显示汉字正常,存入数据库也正常;
发布到服务器后,无法调试,存入数据库后汉字为乱码(nvarchar类型),为了测试,读取到DataTable后,直接在页面Response.Writeline()汉字的那个字段,页面输出为乱码。