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