c#导入excel文件

时间:2015-06-26 08:54:20

标签: c# excel oledbdataadapter

我在我的asp.net项目中将excel导入datatable。

我的代码如下:

 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;

然而它对我不起作用。

任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:2)

如果有的话,请回答其他读者的问题。 如果您希望直接使用Excel文件处理POCO,建议使用我的工具 Npoi.Mapper ,这是一种基于约定的强类型对象和Excel数据之间的映射器,通过NPOI

从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);

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

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