簡體   English   中英

C#導入Excel文件

[英]c# Import excel file

我將excel導入到asp.net項目中的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;

但是它對我不起作用。

任何幫助將不勝感激。

謝謝

如有其他讀者,請回答此問題。 如果您希望直接使用Excel文件處理POCO,建議使用我的工具Npoi.Mapper ,它是通過NPOI在強類型對象和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);

將不同類型的對象放入內存工作簿中,然后一起導出。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM