十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
前提
成都創(chuàng)新互聯(lián)公司專注于企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、衡陽(yáng)網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、商城網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為衡陽(yáng)等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
在Windows下進(jìn)行數(shù)據(jù)處理的時(shí)候最常見(jiàn)的情況莫過(guò)于讀取Microsoft的Excel文件了,Excel的普及率驚人,是事實(shí)上的標(biāo)準(zhǔn)。以前的開(kāi)發(fā)中我采用調(diào)用第三方類庫(kù) NPOI 的方式來(lái)處理Excel。這個(gè)方式有兩個(gè)缺點(diǎn):
如果只是簡(jiǎn)單的導(dǎo)入數(shù)據(jù),完全可以有更加簡(jiǎn)單的方案,方案的限制條件為;
依賴
還是有依賴的 2007 Office System Driver: Data Connectivity Components
如果沒(méi)有安裝Driver,你會(huì)得到以下的報(bào)錯(cuò):
Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine
代碼
public static DataTable ReadAsTable(string xlsxFile, string sheetName = "Sheet1") { var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\"", xlsxFile); var adapter = new OleDbDataAdapter($"SELECT * FROM [{sheetName}$]", connectionString); var ds = new DataSet(); adapter.Fill(ds, sheetName); return ds.Tables[sheetName]; }
在 connectionString 中有兩個(gè)Extended Properties可以根據(jù)需要進(jìn)行修改:
技巧
有時(shí)候我們需要將讀取的數(shù)據(jù)綁定到特定類型上,我們可以這樣做:
var query = dt .AsEnumerable() .Where(x => x.Field("phoneNumber") != string.Empty) .Select(x => new Contact { FirstName= x.Field ("First Name"), LastName = x.Field ("Last Name"), PhoneNumber =x.Field ("Phone Number"), });
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。