在-ASPNET-中進行-EXCEL-開發(fā)_第1頁
在-ASPNET-中進行-EXCEL-開發(fā)_第2頁
在-ASPNET-中進行-EXCEL-開發(fā)_第3頁
在-ASPNET-中進行-EXCEL-開發(fā)_第4頁
在-ASPNET-中進行-EXCEL-開發(fā)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

在ASP.NET中進行EXCEL開發(fā)在ASP.NET中進行EXCEL開發(fā)在顯示大量數(shù)據(jù)的時候,使用EXCEL無疑是一個很好的選擇,以網(wǎng)格為基本的數(shù)據(jù)單元,配合上眾多的計算公式和顏色、線條可以組成功能強大而美觀的數(shù)據(jù)報表。在現(xiàn)代企業(yè)中,這種應用也是最為廣泛的。因此在Web項目中,生成并輸出EXCEL報表也成了非常常見的功能。但是,在ASP.NET中使用EXCEL卻一直存在著以EXCEL進程無法釋放為代表的幾個比較討厭而且難于解決的問題,在這篇文章中將給出完整的解決方案。其中包含以下幾個方面:開發(fā)環(huán)境配置DCOM在ASP.NET中進行EXCEL編程優(yōu)化EXCEL的執(zhí)行效率在Web項目中使用EXCEL的其他方案本文使用了下列技術:.NET、C#或VisualBasic.NET、VisualStudio.NET、EXCEL本頁內(nèi)容開發(fā)環(huán)境本文討論的是在ASP.NET中使用MicrosoftExcelObjectLibrary進行開發(fā)的過程,開發(fā)環(huán)境的配置如下:Windows2000+SP4OfficeXP+SP1VisualStudio.NET2003注意:在這里,請確認一下你的操作系統(tǒng)和Office的版本,包括補丁的版本。雖然在絕大多數(shù)情況下Windows2000/WindowsXP、Office2000/OfficeXP的任意組合都能正常工作,但也確實存在同樣的代碼在僅僅是SP版本不同的兩臺機器上一個執(zhí)行正常,而另一個卻出現(xiàn)異常的情況。所以,強烈建議使用與服務器環(huán)境完全一致的開發(fā)環(huán)境。配置DCOM對Excel進行編程,實際上就是通過.NetFramework去調(diào)用Excel的COM組件,所有要在Web環(huán)境下調(diào)用COM組件的時候,都需要對其進行相應的配置。很多朋友都反映在Windows環(huán)境下調(diào)試正常的程序,一拿到Web環(huán)境中就出錯,實際上就是因為缺少了這一步。下面就詳細介紹DCOM的配置過程。1、運行“dcomcnfg”,打開DCOM配置程序。2、在應用程序列表中找到“MicrosoftExcel應用程序”,點擊“屬性”。3、將“常Server.MapPath("testFile.xls")DimxlAppAsExcel.ApplicationDimxlBookAsExcel.WorkbookDimxlSheetAsExcel.WorksheetDimxlRangeAsExcel.RangeTryxlApp=NewExcel.Application''不顯示Excel窗口,自動釋放,不顯示提示信息xlApp.Visible=FalsexlApp.UserControl=FalsexlApp.DisplayAlerts=False''打開一個作為輸出模板的文件'xlBook=xlApp.Workbooks.Open(filePath)''或是新建一個文件xlBook=xlApp.Workbooks.Add()''選擇當前的Sheet''【注意】索引的下標是從1開始的,而不是0xlSheet=xlBook.Sheets(1)DimstrTitleAsStringDimstrPosAsStringstrTitle="大航海時代4補給港口列表"''選擇單元格strPos="A1:F1"xlRange=xlSheet.Range(strPos)''設置單元格內(nèi)容xlRange.Formula=strTitle''字體:18號,粗體xlRange.Font.Size=18xlRange.Font.Bold=True''合并單元格xlRange.MergeCells=True''設置背景色''使用內(nèi)置的顏色''xlRange.Interior.ColorIndex=40''或者直接設置RGB顏色xlRange.Interior.Color=RGB(255,204,153)''設置居中xlRange.HorizontalAlignment=Excel.XlHAlign.xlHAlignCenter''設置行高xlRange.RowHeight=25''保存打開的文件'xlBook.Save()''保存新建的文件xlBook.SaveAs(filePath)CatchexAsExceptionThrowexFinally''釋放對象資源ReleaseComObject(xlRange)ReleaseComObject(xlSheet)IfNotxlBookIsNothingThenxlBook.Close()ReleaseComObject(xlBook)EndIfIfNotxlAppIsNothingThenxlApp.Quit()ReleaseComObject(xlApp)EndIf''強制回收內(nèi)存GC.Collect()EndTry其中的ReleaseComObject方法:SubReleaseComObject()SubReleaseComObject(ByValobjAsObject)IfNotobjIsNothingThenSystem.Runtime.InteropServices.Marshal.ReleaseComObject(obj)obj=NothingEndIfEndSub將這段代碼放到你的項目中,執(zhí)行之后,你就會在Web項目的目錄中找到輸出的“testFile.xls”文件?,F(xiàn)在,我們將整個過程的關鍵部分提出來,就簡化為下面這樣的結構:[定義Excel對象]Try[使用Excel對象]CatchexAsExceptionThrowexFinally[釋放Excel對象][強制回收內(nèi)存]EndTry這種結構是保證Excel進程可以被正確釋放的關鍵,也就是說,你必須保證所有使用過的Excel對象都被釋放了。為了讓你對這種結構有更清楚的認識,我們將上面的代碼按照不同的級別重新整理一下。這樣我們就可以更清楚的看到,釋放對象的原則就是:在本函數(shù)中定義并使用的Excel對象,一定要在本函數(shù)中釋放。整理過的代碼如下所示:SubExportExcel()SubExportExcel(ByValfilePathAsString)DimxlAppAsExcel.ApplicationDimxlBookAsExcel.WorkbookTryxlApp=NewExcel.Application''不顯示Excel窗口,自動釋放,不顯示提示信息xlApp.Visible=FalsexlApp.UserControl=FalsexlApp.DisplayAlerts=False''打開一個作為輸出模板的文件'xlBook=xlApp.Workbooks.Open(filePath)''或是新建一個文件xlBook=xlApp.Workbooks.Add()FillSheet(xlBook,1)''保存打開的文件'xlBook.Save()''保存新建的文件xlBook.SaveAs(filePath)CatchexAsExceptionThrowexFinally''釋放對象資源IfNotxlBookIsNothingThenxlBook.Close()ReleaseComObject(xlBook)EndIfIfNotxlAppIsNothingThenxlApp.Quit()ReleaseComObject(xlApp)EndIf''強制回收內(nèi)存GC.Collect()EndTryEndSubSubFillSheet()SubFillSheet(ByValxlBookAsExcel.Workbook,ByValindexAsInteger)DimxlSheetAsExcel.WorksheetTryxlSheet=xlBook.Sheets(index)SetTitle(xlSheet)CatchexAsExceptionThrowexFinallyReleaseComObject(xlSheet)EndTryEndSubSubSetTitle()SubSetTitle(ByValxlSheetAsExcel.Worksheet)DimxlRangeAsExcel.RangeDimxlFontAsExcel.FontTryDimstrTitleAsStringDimstrPosAsStringstrTitle="大航海時代4補給港口列表"''選擇單元格strPos="A1:F1"xlRange=xlSheet.Range(strPos)''設置單元格內(nèi)容xlRange.Formula=strTitle''字體:18號,粗體xlFont=xlRange.FontxlFont.Size=18xlFont.Bold=True''合并單元格xlRange.MergeCells=True''設置背景色''使用內(nèi)置的顏色''xlRange.Interior.ColorIndex=40''或者直接設置RGB顏色xlRange.Interior.Color=RGB(255,204,153)''設置居中xlRange.HorizontalAlignment=Excel.XlHAlign.xlHAlignCenter''設置行高xlRange.RowHeight=25CatchexAsExceptionThrowexFinallyReleaseComObject(xlFont)ReleaseComObject(xlRange)EndTryEndSub值得注意的一個地方是,在SetTitle函數(shù)中,我們又定義了一個Excel.Font對象,對字體的設置通過這個對象來完成,并且在執(zhí)行后釋放掉。在通常情況下,我們不需要使用這么麻煩的方法,但在某些時候,如果不釋放這些間接引用的對象(比如xlRange.Font.Size中的Font對象)的話,就無法正常中止Excel進程。如果我們非常不幸的遇到了這種情況的時候,就需要仔細檢查代碼,保證不存在間接引用(簡單的說就是沒有使用兩個“.”同時出現(xiàn)的代碼)。關于如何設置單元格,其實并沒有什么值得說的,基本上所有的問題都可以通過在Excel中錄制宏來解決。此外,當你還希望了解更多的關于Excel對象的信息的時候,可以去看Excel的VBA參考手冊,在我的機器上,它位于“F:/ProgramFiles/MicrosoftOffice/Office10/2052/VBAXL10.chm”。如果你在你的機器上沒有找到這個文件,那就需要添加安裝Office安裝選項中“Office共享功能”下面的“VisualBasicforApplictions”組件中的“VisualBasic幫助”。優(yōu)化EXCEL的執(zhí)行效率通過前面的介紹,我們已經(jīng)可以在ASP.NET中進行Excel開發(fā)了,但如果是要進行企業(yè)級的開發(fā)的話,我們就必須考慮一下效率的問題了。這是因為:1、每當一個用戶提交請求時,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論