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的輸出。可以設置到單個單元格,但讀取功能很弱。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();

主站蜘蛛池模板: 亚洲男人的天堂视频| 四虎国产精品永久一区| 成色7777精品在线| 亚洲精品中文字幕午夜| 极品国产在线| 99久久国产综合精品2020| 久久黄色毛片| 亚洲视频免费播放| 亚洲成人动漫在线观看| 欧美成人看片一区二区三区| 欧美在线视频不卡第一页| 九月婷婷亚洲综合在线| 久久男人视频| 亚洲日韩精品无码专区97| 久久人午夜亚洲精品无码区| 亚洲综合色婷婷中文字幕| 欧美亚洲综合免费精品高清在线观看| 婷婷亚洲视频| 欧美激情综合| 夜夜操天天摸| 国内熟女少妇一线天| 国产精品入口麻豆| 国产精品大尺度尺度视频| 97se亚洲综合在线韩国专区福利| 成人在线不卡| 国产精品 欧美激情 在线播放| 亚洲国产综合第一精品小说| 国产精品自在在线午夜区app| 麻豆精品视频在线原创| 久久人人爽人人爽人人片aV东京热 | 毛片最新网址| 99视频在线免费看| 在线观看国产一区二区三区99| 精品福利视频导航| 精品免费在线视频| 国产18在线播放| 一区二区午夜| 欧美精品伊人久久| 中文字幕在线看| 国产一区亚洲一区| 国产特一级毛片| 香蕉视频在线精品| 天天干伊人| 国产呦视频免费视频在线观看| 免费国产一级 片内射老| 国产区精品高清在线观看| 国产性生大片免费观看性欧美| h网站在线播放| 91亚洲免费| 露脸真实国语乱在线观看| 在线观看热码亚洲av每日更新| 日韩黄色大片免费看| 亚洲成AV人手机在线观看网站| 国产欧美中文字幕| 精品欧美视频| 在线a网站| 国产精品99r8在线观看| 人妻免费无码不卡视频| 欧美日韩在线亚洲国产人| 中国一级特黄大片在线观看| 亚洲成a人片| 极品私人尤物在线精品首页| AV网站中文| 国产高清又黄又嫩的免费视频网站| 久久国产高清视频| 999福利激情视频| 免费看美女毛片| 色哟哟色院91精品网站| 精品视频第一页| 成年女人a毛片免费视频| 热99re99首页精品亚洲五月天| 日韩区欧美区| 思思99思思久久最新精品| 毛片国产精品完整版| 久久精品国产免费观看频道| 国产欧美日韩视频怡春院| 国产精品视频系列专区| 尤物视频一区| 国产永久免费视频m3u8| 美女内射视频WWW网站午夜| 国产成人一区免费观看| 久久精品国产999大香线焦|