用microsoft.jet.oledb.4.0讀取excel資料的**是這樣的:
string connstr="provider=microsoft.jet.oledb.4.0;data source=c:/aa.xls;extended properties='excel 8.0;hdr=no;imex=1';";
oledbconnection conn=new oledbconnection(connstr);
conn.open();
string sql="select * from [sheet1$]";
oledbdataadapter da=new oledbdataadapter(sql,connstr);
dataset ds=new dataset();
da.fill(ds);
datagrid1.datasource=ds;
datagrid1.databind();
問題就出在連線字串上面,後面一定要加上extended properties='excel 8.0;hdr=no;imex=1'。
hdr=yes 有兩個值:yes/no,表示第一行是否欄位名,預設是yes,第一行是欄位名
imex=1 解決數字與字元混合時,識別不正常的情況.
引數hdr的值:
hdr=yes,這代表第一行是標題,不做為資料使用 ,如果用hdr=no,則表示第一行不是標題,做為資料來使用。系統預設的是yes
imex ( import export mode )設定
imex 有三種模式:
0 is export mode
1 is import mode
2 is linked mode (full update capabilities)
我這裡特別要說明的就是 imex 引數了,因為不同的模式代表著不同的讀寫行為:
當 imex=0 時為「匯出模式」,這個模式開啟的 excel 檔案只能用來做「寫入」用途。
當 imex=1 時為「匯入模式」,這個模式開啟的 excel 檔案只能用來做「讀取」用途。
當 imex=2 時為「鏈結模式」,這個模式開啟的 excel 檔案可同時支援「讀取」與「寫入」用途。
意義如下:
0 ---輸出模式;
1---輸入模式;
2----鏈結模式(完全更新能力)
讀取EXCEL檔案數字型別欄位為空的問題
用microsoft.jet.oledb.4.0讀取excel資料的 是這樣的 string connstr provider microsoft.jet.oledb.4.0 data source c aa.xls extended properties excel 8.0 hdr no imex...
poi讀取Excel檔案,數字的處理問題
poi讀取excel檔案時,長一點的數字自動變成了科學計數法,短的數字自動加上了 0 一開始不知道有這個問題,測試了下才發現這個問題,也試了好多辦法去解決,今天發現個完美解決的辦法。numberformat nf numberformat.getinstance hssfcell num hssfr...
Excel 檔案資料讀取和篩選
需求 已知乙個excel 表中的 sheet1 中,有id,name,salary 3列的內容,要求將薪水重複次數最多的按從高到低進行排序 coding utf 8 import xlrd from collections import counter import operator file r ...