通過oledb連線,讀取excel。
provider=microsoft.jet.oledb.4.0;" + "data source=" + filenameurl + ";extended properties='excel 8.0; hdr=yes; imex=1'
特別注意:
extended properties='excel 8.0;hdr=yes;imex=1'
a:hdr ( header row )預設值yes。
hdr=yes表示第一行是標題,不做為資料使用;當hdr=no,則表示第一行不是標題,做為資料來使用。
b:imex ( import export mode )
imex 有三種模式,各自引起的讀寫行為也不同,容後再述:
0 is export mode
1 is import mode
2 is linked mode (full update capabilities)
當imex=0 時為「匯出模式」,這個模式開啟的 excel 檔案只能用來做「寫入」用途。
當 imex=1 時為「匯入模式」,這個模式開啟的 excel 檔案只能用來做「讀取」用途。
imex=1 解決數字與字元混合時,識別不正常的情況。
當 imex=2 時為「鏈結模式」,這個模式開啟的 excel 檔案可同時支援「讀取」與「寫入」用途。
c:excel 8.0
對於excel 97以上版本都用excel 8.0
// 匯入收款單資料
protected void button2_click(object sender, eventargs e)
;for (int i = 0; i < names.length;i++ )
// 運算元據庫
insertdb();
}catch (exception ex)
}private void readexcel(string path, string name)
//取得每個sheet名
string ssheetname = ws.name;
dataset ds = execleds(path + name, ssheetname);
datatable dt = ds.tables["execl"];
for (int i = 0; i < dt.rows.count; i++)
//收款單號
idocumentno++;
string receiptdocumentno = "sk" + idocumentno;
alist.add(getinsertreceiptdocument(dt.rows[i], receiptdocumentno, name));}}
}private dataset execleds(string filenameurl,string sheet)
private receiptdocumentmodel getinsertreceiptdocument(datarow dr, string receiptdocumentno, string filename)
receiptdocumentmodel.machine_no = dr["整機機號"].tostring();
receiptdocumentmodel.receipt_status = "dl119001";
receiptdocumentmodel.receipt_amount = commonbll.convertexttoamount(dr["核銷金額"].tostring());
receiptdocumentmodel.receipt_verificated_amount = 0;
receiptdocumentmodel.receipt_refund_amount = 0;
receiptdocumentmodel.receipt_balance = commonbll.convertexttoamount(dr["核銷金額"].tostring());
receiptdocumentmodel.receipted_date = datetime.parse(dr["核銷日期"].tostring()).tostring("yyyy-mm-dd");
receiptdocumentmodel.creater = "admin";
receiptdocumentmodel.last_modify_date = datetime.today.tostring("yyyy-mm-dd");
receiptdocumentmodel.remark = dr["銷售合同號"].tostring();
return receiptdocumentmodel;
}// 運算元據庫
private void insertdb()
// 運算元據庫
int result = moneybll.updateaccount(insertobject, null);
if (result > 0)
else
}
oledb讀取Excel資料丟失原因
產生這種問題的根源與excel isam 3 indexed sequential access method,即索引順序訪問方法 驅動程式的限制有關,excel isam 驅動程式通過檢查前幾行中實際值確定乙個 excel 列的型別,然後選擇能夠代表其樣本中大部分值的資料型別 4 也即excel ...
c 乙個通過oledb讀取excel,csv的類
using system using system.collections.generic using system.text using system.data using system.data.oledb namespace synccardservice private void setfi...
OleDb方式讀取excel,和現實不符
開始時候按照嚴格的excel模板來執行,資料都是嚴格要求的,可是到了客戶那裡,什麼花招都來了.也不使用指定的模板了.導致乙個問題 資料列格式不一致 比如一列 前面幾個全部是數字型別,中間穿插幾個以字元形式儲存的數字.直接導致這些資料讀取為dbnull 怎麼解決.搜尋一下.發現這個是oledb的bug...