[英]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.