999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于NPOI導出Excel文件的研究與實現

2013-12-31 00:00:00昌兆文,劉湖平,曾紹軍
中國管理信息化 2013年15期

[摘 要] 在基于B/S結構進行開發的應用系統中,“文件導出”是一項很重要的功能,利用它可以導出相關的業務數據,以便進行資料保存或者不同業務間的數據交互。本文就如何利用NPOI導出一個真正的Excel文件進行研究與分析。

[關鍵詞] NPOI; 導出; Excel文件

doi : 10 . 3969 / j . issn . 1673 - 0194 . 2013 . 15. 061

[中圖分類號] TP294 [文獻標識碼] A [文章編號] 1673 - 0194(2013)15- 0093- 02

1 導出Excel文件的傳統方法

在進行Excel文件導出時,傳統的方法一般都是利用Excel程序自身能夠識別網頁中的表格內容這種特性來實現的。當Web服務程序在響應客戶端瀏覽請求時,先輸出MIME類型,然后輸出表格等HTML內容。比如(以C #代碼為例):

Response.Clear();

Response.Buffer = 1;

Response.AddHeader(\"Content-Disposition\",\"attachment;filename=test.xls\");

Response.ContentType =\"application/ms-excel\";

StringWriter sw= new StringWriter();

HtmlTextWriter htw = new HtmlTextWriter(sw);

GridView1.RenderControl(htw);

Response.Write(sw.ToString());

Response.End();

其中GridView1為Web服務端的GridView控件的ID。利用此方法的前提是需要重載VerifyRenderingInServerForm函數,取消其函數內容。

通過這種方法,可以將Web頁面中的表格內容以HTML代碼的方式輸出到客戶端瀏覽器,并提示保存名為test.xls的Excel文件。用記事本打開該文件,會發現其內容是HTML標記的網頁文件,并非真正的二進制Excel文件。

2 Excel文件導出的其他幾種可行方法

想要導出真正的二進制Excel文件,一是可以利用Excel應用程序對象創建Excel文件,然后輸出二進制流到客戶端瀏覽器進行保存;二是可以利用第三方的Excel類庫,比如MyXlS、Koogra和NPOI等,直接生成二進制的Excel文件,然后輸出二進制流到客戶端瀏覽器進行保存。

利用Excel程序對象創建Excel文件首先要添加Microsoft.Office.Interop.Excel引用,并在代碼中添加引用using Microsoft.Office.Interop.Excel ,然后新建一個ApplicationClass 實例,通過Excel應用程序實例進行相關的Excel文件操作,將創建的臨時Excel文件讀到內存流中,然后以二進制方式輸出,并在最后將此實例釋放。

使用Excel應用程序對象創建Excel文件,需要在服務器端安裝Office,而且還需要設定權限允許.NET訪問COM+,并且在服務器端會看到Excel程序窗口一閃而過,當然可以讓程序窗口不顯示,但是任務管理器里還是會有Excel程序的進程,如果多個用戶同時請求導出Excel文件,會產生多個Excel程序的進程,消耗過多的服務器資源,可能導致服務器宕機。另外Excel程序會把只包含數字的列進行類型轉換,原本是文本型的,Excel程序會將其轉成數值型,比如000123會變成123。如果內容以“=”開頭,Excel程序還會把它當成公式執行,然后報錯等,不便于原始格式Excel的生成。

使用第三方Excel類庫的優勢就是不需要在服務器上安裝微軟的Office,避免版權問題,而且使用起來比Office PIA的API更加方便,更人性化,但幾種Excel類庫各有千秋。比如MyXlS 是一個免費開源的類庫,側重于Excel的輸出??梢栽O置到單個單元格,但讀取功能很弱。Koogra與MyXlS恰恰相反,是一個非常好用Excel讀取類庫,其最新版可以支持Excel 2007格式,可是在測試過程中發現Koogra讀不了MyXlS輸出的XLS文件。而NPOI不僅支持導出Excel,還支持導入Excel,并能“理解”OLE2文檔結構。對于Excel文件來講,NPOI不單是能創建Excel文件,而且能更深入地執行Excel文件的各種操作,比如支持單元格的格式設置、合并單元格、對齊設置、使用邊框、字體設置、背景和紋理設置、寬度和高度設置等,還能使用Excel公式、創建圖形、設置打印機屬性、鎖定列、設置密碼等多項操作。

3 利用NPOI導出Excel文件的實現

基于上述分析,我們使用NPOI類庫實現Excel文件的導出。該類庫是POI的.NET版本。POI是一套用Java寫成的庫,能夠幫助開發者在沒有安裝微軟Office的情況下讀寫Office 97、Office 2003版本的文件。最新的NPOI有.Net 2.0、3.5和4.0三個版本,支持Excel、Word的97、2003和2007格式。

利用NPOI實現Excel文件導出的步驟:

3.1 添加NPOI的引用

先在項目工程里引用NPOI.DLL,然后在代碼開始處添加引用:

using NPOI.SS.Util;

using NPOI.SS.UserModel;

using NPOI.HSSF.UserModel;

3.2 創建工作簿

HSSFWorkbook hssfworkbook = new HSSFWorkbook();

Sheet sheet1= hssfworkbook.CreateSheet(title);//創建標題為title內容的工作簿

3.3 設置單元格樣式

………

Row row1 = sheet1.CreateRow(0);//創建行對象

Cell cell1 = row1.CreateCell(0);//根據行對象創建單元格對象

CellStyle style = hssfworkbook.CreateCellStyle();//創建樣式對象

Font font = hssfworkbook.CreateFont();//創建字體對象

style.Alignment = HorizontalAlignment.CENTER;//設置水平居中

style.VerticalAlignment = VerticalAlignment.CENTER;//設置垂直居中

font.FontHeight = 18 * 20;//設置字體

style.SetFont(font);//設置樣式的字體

cell1.CellStyle = style;//設置單元格的樣式

………

3.4 合并相關單元格

………

CellRangeAddress region = new CellRangeAddress(0, 0, 0, 11);//設置合并區域為0行0列到0行11列

sheet1.AddMergedRegion(region);//為工作簿sheet1添加合并區域

………

3.5 單元格賦值

………

string title = \"2013年度教學任務分配表\";

cell1.SetCellValue(title);//為單元格賦值

………

3.6 導出Excel文件

………

MemoryStream s = new MemoryStream();

hssfworkbook.Write(s);

hssfworkbook.Dispose();

Response.Clear();

Response.Buffer = 1;

Response.ClearContent();

Response.ClearHeaders();

Response.AddHeader(\"Content-Disposition\",\"attachment;filename=\" +Server.UrlEncode(\"教學任務分配表.xls\"));

Response.BinaryWrite(s.ToArray());

s.Dispose();

Response.End();

主站蜘蛛池模板: 54pao国产成人免费视频| 99热这里只有成人精品国产| 久久精品91麻豆| 亚洲一区波多野结衣二区三区| 2021天堂在线亚洲精品专区| 99久久亚洲综合精品TS| 亚洲一区网站| 成人伊人色一区二区三区| 国产在线观看成人91| 成人一区在线| 91外围女在线观看| 国产新AV天堂| 国产流白浆视频| 久久国产高潮流白浆免费观看| 亚洲国产AV无码综合原创| 久久 午夜福利 张柏芝| 亚洲综合二区| 国产成人毛片| 亚洲va在线∨a天堂va欧美va| 国产无码精品在线播放| 成年人国产网站| 99热亚洲精品6码| 亚洲高清在线天堂精品| 亚洲欧美日本国产综合在线 | 亚洲大学生视频在线播放| 高清无码一本到东京热| 亚洲天堂网2014| 亚洲三级a| h视频在线播放| 久久毛片免费基地| 久久一色本道亚洲| 欧美性猛交一区二区三区| 亚洲天堂色色人体| 亚洲国产一区在线观看| 免费国产一级 片内射老| 直接黄91麻豆网站| a毛片在线播放| 欧美日韩国产在线观看一区二区三区 | 大陆国产精品视频| 米奇精品一区二区三区| 久草中文网| 中文毛片无遮挡播放免费| 色综合久久88色综合天天提莫| 人妻少妇乱子伦精品无码专区毛片| 国产AV毛片| 99久久精品久久久久久婷婷| 国产成人高清精品免费软件| 免费啪啪网址| 国产99精品视频| 91破解版在线亚洲| 欧美精品成人一区二区在线观看| 亚洲九九视频| 亚洲欧美人成电影在线观看| 欧美日韩一区二区在线免费观看| 久久中文无码精品| 日韩小视频在线观看| 亚洲国产精品久久久久秋霞影院| 中文字幕永久视频| 国产91高跟丝袜| 亚洲国产日韩视频观看| 成人综合网址| 欧美日韩精品一区二区在线线 | 国产精品yjizz视频网一二区| 亚洲人网站| 日本爱爱精品一区二区| 亚洲 欧美 偷自乱 图片| 精品伊人久久久香线蕉| 伊人久久精品无码麻豆精品| 五月婷婷综合在线视频| 香蕉久久国产超碰青草| 久久久久亚洲AV成人人电影软件| 毛片大全免费观看| 国产主播福利在线观看| 日韩黄色大片免费看| 午夜不卡视频| 2021国产精品自拍| 91九色最新地址| 91在线丝袜| 真人高潮娇喘嗯啊在线观看| 国产精品尤物在线| 在线观看无码av免费不卡网站| 72种姿势欧美久久久久大黄蕉|