資源描述:
《asp.net環(huán)境下的excel導(dǎo)入導(dǎo)出技術(shù)淺析》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、Asp.net環(huán)境下的Excel導(dǎo)入導(dǎo)出技術(shù)淺析——軟件應(yīng)用開(kāi)發(fā)二部張XX1綜述項(xiàng)目開(kāi)發(fā)中經(jīng)常會(huì)用到數(shù)據(jù)的導(dǎo)入導(dǎo)出,很多系統(tǒng)都留有Excel導(dǎo)入導(dǎo)出的功能,以便與自然人或其他系統(tǒng)交互數(shù)據(jù)。只要數(shù)據(jù)交互的雙方都有Excel導(dǎo)入導(dǎo)出的接口,就能很方便地格式化處理對(duì)方的數(shù)據(jù)。一個(gè)優(yōu)秀的系統(tǒng)必然有一些與其他系統(tǒng)的數(shù)據(jù)交互接口,Excel導(dǎo)入導(dǎo)出就是其中比較好的一個(gè)。系統(tǒng)留出Excel導(dǎo)入導(dǎo)出接口的一般做法是實(shí)現(xiàn)導(dǎo)入Excel、導(dǎo)出Excel和導(dǎo)出Excel模板這三種功能。在導(dǎo)入導(dǎo)出Excel的功能上可以加入一些查詢限制條件,從而實(shí)現(xiàn)對(duì)數(shù)據(jù)的過(guò)濾。導(dǎo)出的Excel模板主要是方便其他系統(tǒng)
2、直接使用,在Excel模板文件中可以預(yù)設(shè)好固定的格式,包括字體顏色大小,合并單元格等。開(kāi)發(fā)者可以通過(guò)系統(tǒng)程序生成Excel模板文件,對(duì)于豐富格式的模板最好通過(guò)MicrosoftExcel軟件設(shè)置并保存起來(lái)。MicrosoftExcel是優(yōu)秀的軟件產(chǎn)品,有著豐富的功能,對(duì)Excel文件進(jìn)行編程操作也有多種方法。主要有Excel文件Sql連接讀寫、ExcelCom組件讀寫、字符流Excel文件讀寫三種方式。Asp.net技術(shù)有著大量的B/S應(yīng)用,具有很好的易用性和豐富的功能。本文使用Asp.net的C#后臺(tái)語(yǔ)言,結(jié)合有著較完美功能和界面的Ext前臺(tái)JS腳本技術(shù)進(jìn)行Excel文件的
3、讀寫操作和導(dǎo)入導(dǎo)出演示說(shuō)明。本文將分別從Excel導(dǎo)入和導(dǎo)出兩個(gè)方面分析幾種可能的方法,對(duì)方法應(yīng)用中可能遇到的問(wèn)題也視情況進(jìn)行探討。最后比較各個(gè)方法的優(yōu)缺點(diǎn),總結(jié)使用的方式和注意事項(xiàng)等。網(wǎng)絡(luò)上已經(jīng)有了大量的關(guān)于Asp.NetExcel導(dǎo)入導(dǎo)出的資料,在參考這些資料的基礎(chǔ)上本文側(cè)重實(shí)踐應(yīng)用中遇到的一些問(wèn)題的解決和匯總分析。2Excel導(dǎo)入導(dǎo)入主要有兩種方式Excel文件Sql連接讀取和ExcelCom組件讀取。把Excel文件保存成CSV文件(列之間用英文逗號(hào)分隔,行之間用換行符分隔)或者TXT文件(列之間用制表符分隔,行之間用換行符分隔),然后再使用文本流的方式讀取也可以作為
4、一種方法。無(wú)論是哪種方式,Excel文件都需要把文件放在導(dǎo)入程序所在的機(jī)器本地磁盤上。對(duì)于Asp.Net網(wǎng)站就是要把Excel數(shù)據(jù)文件上傳到后臺(tái)網(wǎng)站服務(wù)器后才能執(zhí)行導(dǎo)入。1.1Excel文件Sql連接讀取使用Sql連接Excel文件的方式讀取數(shù)據(jù)時(shí)是把Excel文件當(dāng)做數(shù)據(jù)庫(kù)來(lái)操作,把Excel工作表當(dāng)做數(shù)據(jù)表,Excel的列當(dāng)做數(shù)據(jù)表的字段。下面是連接Excel文件導(dǎo)入數(shù)據(jù)的示例代碼:publicDataSetInputExcel(){DataSetds=null;stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSour
5、ce=D:\test.xls;"+"ExtendedProperties='Excel8.0;HDR=YES;IMEX=1'";OleDbConnectionconn=newOleDbConnection(strCon);try{stringsql="select*from[Sheet1$]";conn.Open();OleDbDataAdaptermyAdapter=newOleDbDataAdapter(sql,strCon);ds=newDataSet();myAdapter.Fill(ds,"[Sheet1$]");}catch{}finally{conn.Clos
6、e();}returnds;}上例是從“D:test.xls”Excel文件中讀取名稱為“sheet1”的工作表中的內(nèi)容到DataSet中。導(dǎo)出數(shù)據(jù)到DataSet后就可以在系統(tǒng)內(nèi)部進(jìn)行格式化處理等操作了?!癏DR=YES”表示第一行作為標(biāo)題,這也是默認(rèn)值,如果第一行數(shù)據(jù)有空著的地方,查詢到DataSet中的列名會(huì)使用諸如“F2”,“F8”等來(lái)代替。“IMEX=1”表示以只讀方式讀取。擴(kuò)展屬性"ExtendedProperties=‘Excel8.0’"是必須的,如果不這樣指定,微軟Jet數(shù)據(jù)庫(kù)引擎(JET是JointEngineTechnology的簡(jiǎn)稱)會(huì)把連接到的文件
7、默認(rèn)為是Access數(shù)據(jù)庫(kù)文件?!癧Sheet1$]”表示Excel文件中的工作表名稱sheet1,在查詢語(yǔ)句中要使用“[”+工作表名+“$]”格式指定工作表,也可以使用“`”+工作表名+“$`”的格式。中括號(hào)和“`(鍵盤左上方~下面的字符)”用來(lái)工作表名稱,Microsoft建議使用方括號(hào),這是用于表示未知數(shù)據(jù)庫(kù)對(duì)象名的標(biāo)準(zhǔn)約定。JET數(shù)據(jù)庫(kù)引擎程序需要用到“msjetoledb40.dll”,根據(jù)版本不同動(dòng)態(tài)庫(kù)文件也有所不同。此動(dòng)態(tài)庫(kù)一般在安裝Office時(shí)會(huì)注冊(cè)安裝,如果沒(méi)有的話需要單獨(dú)下載并使用