asp.net使用npoi讀取excel模板並匯出下載詳解

來源:互聯網
上載者:User

 這篇文章主要介紹了asp.net使用npoi讀取excel模板並匯出下載的樣本,大家參考使用吧

為什麼要使用NPOI匯出Excel? 一、解決傳統操作Excel遇到的問題: 如果是.NET,需要在伺服器端裝Office,且及時更新它,以防漏洞,還需要設定許可權允許.NET訪問COM+,如果在匯出過程中出問題可能導致伺服器宕機。Excel會把只包含數位列進行類型轉換,本來是文本型的,Excel會將其轉成數值型的,比如編號000123會變成123。匯出時,如果欄位內容以“-”或“=”開頭,Excel會把它當成公式進行,會報錯。Excel會根據Excel檔案前8行分析資料類型,如果正好你前8行某一列只是數字,那它會認為該列為數值型,自動將該列轉變成類似1.42702E+17格式,日期列變成包含日期和數位。 二、個人認為使用NPOI的優勢 匯出的速度很快,跟傳統的方式不是一個數量級的。不用擔心進程問題,因為傳統的匯出方式每匯出一個Excel會開啟一個Excel進程,不會自動關閉,若手工關閉,必須遍曆把所有的Excel進程都殺死,這樣會造成不能並發匯出的問題。 使用步驟 第一步:在解決方案中添加引用。 在這裡使用的是NPOI 1.2.5的.net2.0版本,需要引用兩個檔案: NPOI 1.2.5的下載地址為:http://npoi.codeplex.com/releases/view/38113 第二步:在CS檔案中添加引用。  複製代碼 代碼如下:using NPOI.HSSF.UserModel;using System.IO;//記憶體流的使用using NPOI.SS.UserModel  第三步:具體使用代碼  複製代碼 代碼如下:#region載入模板檔案到活頁簿對象中 //建立活頁簿對象HSSFWorkbookhssfworkbook;//開啟模板檔案到檔案流中using(FileStreamfile=newFileStream(HttpContext.Current.Request.PhysicalApplicationPath+@"template/book1.xls",FileMode.Open,FileAccess.Read)){//將檔案流中模板載入到活頁簿對象中hssfworkbook=newHSSFWorkbook(file);}#endregion #region根據模板設定工作表的內容 //建立一個名為Sheet1的工作表ISheetsheet1=hssfworkbook.GetSheet("Sheet1");//將資料添加到表中對應的儲存格中,因為行已經建立,不需要重新建立行sheet1.GetRow(1).GetCell(1).SetCellValue(200200);sheet1.GetRow(2).GetCell(1).SetCellValue(300);sheet1.GetRow(3).GetCell(1).SetCellValue(500050);sheet1.GetRow(4).GetCell(1).SetCellValue(8000);sheet1.GetRow(5).GetCell(1).SetCellValue(110);sheet1.GetRow(6).GetCell(1).SetCellValue(100);sheet1.GetRow(7).GetCell(1).SetCellValue(200);sheet1.GetRow(8).GetCell(1).SetCellValue(210);sheet1.GetRow(9).GetCell(1).SetCellValue(2300);sheet1.GetRow(10).GetCell(1).SetCellValue(240);sheet1.GetRow(11).GetCell(1).SetCellValue(180123);sheet1.GetRow(12).GetCell(1).SetCellValue(150); //強制Excel重新計算表中所有的公式sheet1.ForceFormulaRecalculation=true;#endregion#region設定回應標頭(檔案名稱和檔案格式)//設定響應的類型為ExcelResponse.ContentType="application/vnd.ms-excel";//設定下載的Excel檔案名稱Response.AddHeader("Content-Disposition",string.Format("attachment;filename={0}","test.xls"));//Clear方法刪除所有緩衝中的HTML輸出。但此方法只刪除Response顯示輸入資訊,不刪除Response頭資訊。以免影響匯出資料的完整性。Response.Clear();#endregion#region寫入到用戶端using(MemoryStreamms=newMemoryStream()){//將活頁簿的內容放到記憶體流中hssfworkbook.Write(ms);//將記憶體流轉換成位元組數組發送到用戶端Response.BinaryWrite(ms.GetBuffer());Response.End();}#endregion   3、總結 載入模板檔案到活頁簿對象中。根據模板設定工作表的內容。設定回應標頭(檔案名稱和檔案格式)。寫入到用戶端。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.