c#导入excel文件

我在我的asp.net项目中导入Excel到数据表。

我有下面的代码:

string excelConString = string.Format( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};" + "Extended Properties='Excel 8.0;" + "IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text;'", filepath); using (OleDbConnection connection = new OleDbConnection(excelConString)) { connection.Open(); string worksheet; worksheet = "Sheet 1$"; string connStr; connStr = string.Format("Select * FROM `{0}`", worksheet); OleDbDataAdapter daSheet = new OleDbDataAdapter(connStr, connection); DataSet dataset = new DataSet(); DataTable table; table = new DataTable(); daSheet.Fill(table); dataset.Tables.Add(table); connStr = string.Format("Select * FROM `{0}$`", worksheet); table = new DataTable(); daSheet.Fill(table); dataset.Tables.Add(table); } 

当我运行上面的代码为了导入excel,最后的数据总是失踪,因为最后的数据有如下特殊字符

İ,Ö,Ş ”等

我怎样才能解决这个问题。我在下面的代码添加

 "IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text; 

但是它不适合我。

任何帮助将不胜感激。

谢谢

只要回答这个问题的其他读者,如果有的话。 如果您更愿意直接用Excel文件处理POCO,build议使用我的工具Npoi.Mapper ,这是一个基于NPOI的强types对象和Excel数据之间基于约定的映射器。

从Excel获取对象(XLS或XLSX)

 var mapper = new Mapper("Book1.xlsx"); var objs1 = mapper.Take<SampleClass>("sheet2"); // You can take objects from the same sheet with different type. var objs2 = mapper.Take<AnotherClass>("sheet2"); 

将对象导出到Excel(XLS或XLSX)

 //var objects = ... var mapper = new Mapper(); mapper.Save("test.xlsx", objects, "newSheet", overwrite: false); 

将不同types的对象放入内存工作簿并一起导出。

 var mapper = new Mapper("Book1.xlsx"); mapper.Put(products, "sheet1", true); mapper.Put(orders, "sheet2", false); mapper.Save("Book1.xlsx");