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

基于NPOI組件生成Excel報表的設(shè)計與實現(xiàn)

2016-03-22 14:00:08蔡小艷盧莉娜鄭炎朱成文
電腦知識與技術(shù) 2016年1期

蔡小艷++盧莉娜++鄭炎++朱成文

摘要:為避免傳統(tǒng)操作Excel遇到的問題,提高信息管理系統(tǒng)中數(shù)據(jù)導(dǎo)出操作的靈活性和通用性,該文詳細介紹了在Visual Studio 2008使用C#語言、通過引用開源的NPOI組件,結(jié)合Microsoft SQL Server 2005實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出到Excel的設(shè)計思路和實現(xiàn)方法。

關(guān)鍵詞:C#;Excel;NPOI;導(dǎo)出數(shù)據(jù)

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)01-0064-02

1 概述

NPOI是POI(POI是一個開源的Java讀寫Excel、Word等微軟OLE2組件文檔的項目)項目的.Net版本。NPOI可以在未安裝Office的環(huán)境下實現(xiàn)Excel、Word等微軟OLE2組件文檔讀寫[1],并能實現(xiàn)公式計算、單元格高級樣式等復(fù)雜操作。因此,本文借助第三方組件NPOI的方式來實現(xiàn)Excel數(shù)據(jù)的批量導(dǎo)出。

2 數(shù)據(jù)導(dǎo)出設(shè)計思路

2.1基本思路

采用NPOI組件將SQL Server數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出到Excel表格的思路分析:

1) 選擇需要導(dǎo)出的數(shù)據(jù);

2) 從SQL Server2005讀取表中數(shù)據(jù)到DataSet中;

3) 調(diào)用FileStream類創(chuàng)建一個文件對象;

4) 調(diào)用HSSFWorkbook類創(chuàng)建工作薄對象;

5) 調(diào)用ISheet類創(chuàng)建工作表對象;

6) 定義表格行和單元格;

7) 將DataSet中的數(shù)據(jù)按格式要求分別填入工作表對應(yīng)的單元格;

8) 將整個工作表內(nèi)容寫入到文件對象中,從而生成對應(yīng)的Excel文件。

2.2數(shù)據(jù)導(dǎo)出流程圖

使用NPOI組件導(dǎo)出Excel數(shù)據(jù)的流程圖如圖1所示。

3 使用NPOI導(dǎo)出數(shù)據(jù)到Excel

Excel包括的核心元素按照層次由上至下有工作簿(也就是一個xls文件)、工作表(也就是一個sheet)、表格中一個行、表格中的一個單元格。與此相對應(yīng),NPOI通過HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell 這4個類分別來定義上述的Excel核心元素,完成xls文件的創(chuàng)建過程[2]。

3.1添加NPOI的引用

使用NPOI創(chuàng)建Workbook之前,先要在項目中添加NPOI的引用,具體步驟如下:

1)在項目菜單欄中選擇“項目”→“添加引用”,彈出“添加引用”對話框。

2)選擇瀏覽選項卡,選擇NPOI.dll。

3)單擊“確定”按鈕,將NPOI.dll引用到工程中。

4)進入代碼編輯器窗口,添加using語句引入NPOI的命名空間。

using NPOI.HSSF.UserModel;

using NPOI.SS.UserModel;

using NPOI.SS.Util;

NPOI.HSSF.UserModel 空間主要有HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell,對應(yīng)的接口為位于NPOI.SS.UserModel 空間下的IWorkbook、ISheet、IRow、ICell,分別對應(yīng)Excel文件、工作表、行、單元格[3]。

圖1 數(shù)據(jù)導(dǎo)出流程圖

3.2創(chuàng)建工作薄

創(chuàng)建一個新的xls工作薄只需要初始化一個新的HSSFWorkbook實例,代碼如下:

HSSFWorkbook wkBook =new HSSFWorkbook( ); //創(chuàng)建工作薄wkBook

上述語句創(chuàng)建的wkBook在Excel中打開會報錯,因為Excel規(guī)定一個Workbook必須至少帶一個Sheet,所以必須加入下面創(chuàng)建sheet的代碼才能保證生成的文件正常。

ISheet sheet= wkBook.CreateSheet(“單位信息表”); //創(chuàng)建一個工作表sheet

創(chuàng)建單元格首先要創(chuàng)建單元格所在的行,下面的代碼創(chuàng)建了第0行。

IRow row = sheet.CreateRow(0); //創(chuàng)建單元格所在的行row

行創(chuàng)建好后就可以創(chuàng)建單元格,下面的代碼創(chuàng)建了A1位置的單元格。

ICell cell = row.CreateCell(0); //創(chuàng)建單元格cell

3.3 設(shè)置單元格字體

在設(shè)置字體之前,首先需要創(chuàng)建字體對象,代碼如下:

IFont font = wkBook.CreateFont( ); //創(chuàng)建字體對象

1)設(shè)置字體名稱

設(shè)置字體名稱的前提:假設(shè)打開這個xls文件的電腦有這種字體,如果沒有,Excel將使用默認字體。下面是設(shè)置字體名稱為“宋體”的代碼:

font.FontName=”宋體”;

2)設(shè)置字號

與字號相關(guān)的屬性有FontHeight和FontHeightInPoints,通常使用FontHeightInPoints來設(shè)置,代碼如下:

font.FontHeightInPoints = 10; //設(shè)置字號

字體在設(shè)置完成后,賦給單元格樣式,代碼如下:

ICellStyle style = wkBook.CreateCellStyle( ); //創(chuàng)建樣式對象

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

cell.CellStyle = style; //設(shè)置單元格的樣式

3.4 向單元格寫入數(shù)據(jù)

Cell.SetCellValue( “單位名稱” );

如果要創(chuàng)建多個表格行和單元格,并在其中填充數(shù)據(jù),可以使用循環(huán)和嵌套循環(huán)的方法來創(chuàng)建。

3.5 導(dǎo)出Excel文件

數(shù)據(jù)填充完畢,保存xls文件通過如下代碼來實現(xiàn):

FileStream fs = new FileStream(fName, FileMode.OpenOrCreate);

其中fName表示xls文件的保存路徑;FileMode.OpenOrCreate表示操作系統(tǒng)打開文件的方式,如果文件存在則打開,否則,創(chuàng)建新文件。

創(chuàng)建FileSteam文件流后,直接調(diào)用HSSFWorkbook類的Write方法即可將設(shè)置好格式并填充完數(shù)據(jù)的Excel文件創(chuàng)建在指定的目錄中,數(shù)據(jù)的導(dǎo)出工作完成。

wkBook.Write(fs);

使用NPOI組件將DataSet對象中的數(shù)據(jù)導(dǎo)出為Excel文件的核心代碼如下:

public static bool ExportToExcel(DataSet ds, string fName)

{ HSSFWorkbook wkBook = new HSSFWorkbook();

ISheet sheet = wkBook.CreateSheet("導(dǎo)出信息");

bool res = true;

FileStream fs = null;

try

{fs = new FileStream(fName, FileMode.OpenOrCreate);

//導(dǎo)出表頭

IRow row = sheet.CreateRow(0);

ICell cell;

int cid = 0;

for (int i = 0; i < ds.Tables[0].Columns.Count; i++)

{ cell = row.CreateCell(cid);

cell.SetCellValue(ds.Tables[0].Columns[i].ToString());

cid++;}

//導(dǎo)出內(nèi)容

for (int j = 0; j < ds.Tables[0].Rows.Count; j++)

{row = sheet.CreateRow(j + 1);

cid = 0;

for (int i = 0; i < ds.Tables[0].Columns.Count; i++)

{cell = row.CreateCell(cid);

cell.SetCellValue(ds.Tables[0].Rows[j][i].ToString());

cid++;}}

wkBook.Write(fs); }

catch (Exception e)

{System.Diagnostics.Trace.WriteLine(e.Message);

res = false; }

finally

{ if (fs != null)

{

fs.Close();}}

return res;}

4 結(jié)束語

本文采用Visual Studio開發(fā)平臺,運用開源的NPOI組件,結(jié)合Microsoft SQL Server 2005實現(xiàn)了Excel文件的批量生成,能在沒有安裝Office的機器上將數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出到Excel文件。NPOI文檔完善、更新及時,使用NPOI組件生成Excel文件非常方便、人性化。

參考文獻:

[1] NPOI官網(wǎng)[EB/OL]. http://npoi.codeplex.com

[2] 李碩.一種高效率的.Net平臺Excel文件控制方法[J].軟件導(dǎo)刊,2013(11):26-27.

[3] 錢立,鄧緋.高校新生入學(xué)宿舍管理系統(tǒng)的設(shè)計與實現(xiàn)[J].重慶三峽學(xué)院學(xué)報,2014(3):48-51.

主站蜘蛛池模板: 农村乱人伦一区二区| 久久永久视频| 国产男人的天堂| 欧美一区二区啪啪| 亚洲水蜜桃久久综合网站 | av午夜福利一片免费看| 亚洲综合色吧| 国产高潮流白浆视频| 国产成人1024精品| 国产精品吹潮在线观看中文| 亚洲最新地址| 国产玖玖视频| 亚洲大尺码专区影院| 视频在线观看一区二区| JIZZ亚洲国产| 久久成人18免费| 久久久久亚洲Av片无码观看| 熟女视频91| 亚洲午夜18| 国产女人水多毛片18| 中国一级特黄视频| 波多野结衣无码中文字幕在线观看一区二区 | 欧美19综合中文字幕| AV无码一区二区三区四区| 国产精品99一区不卡| 欧洲日本亚洲中文字幕| 米奇精品一区二区三区| 无码精品福利一区二区三区| 五月天在线网站| 日本高清在线看免费观看| 亚洲系列中文字幕一区二区| 欧美在线精品一区二区三区| 国产精品白浆在线播放| 日本精品αv中文字幕| av一区二区无码在线| 国产精品综合色区在线观看| 精品国产中文一级毛片在线看| 久久久久久国产精品mv| www.99在线观看| 综合人妻久久一区二区精品| 国产大片黄在线观看| 亚洲日韩精品无码专区97| 精品综合久久久久久97超人该| 亚洲色中色| 91久久精品国产| 无码中文AⅤ在线观看| 婷婷激情五月网| 国产精品视频公开费视频| 欧美一区二区三区欧美日韩亚洲| 日韩av高清无码一区二区三区| 伊人婷婷色香五月综合缴缴情| 亚洲人成网站日本片| 亚洲成肉网| 无码福利日韩神码福利片| 人妻无码中文字幕一区二区三区| 国产高清在线观看| 亚洲欧美人成电影在线观看| 欧美亚洲网| 日韩不卡高清视频| 最新亚洲人成无码网站欣赏网 | 欧美精品另类| 一级香蕉人体视频| 国产在线一区视频| 中文字幕av无码不卡免费| 福利国产微拍广场一区视频在线| 久久伊伊香蕉综合精品| 亚洲天堂区| 国产一区二区精品高清在线观看| 久久国产精品国产自线拍| 久久精品丝袜| 很黄的网站在线观看| 日韩欧美中文字幕在线精品| 亚洲中文字幕国产av| 国产黑人在线| 免费高清毛片| 97se亚洲综合在线韩国专区福利| a天堂视频在线| 久久99热这里只有精品免费看| 无码高潮喷水在线观看| 国产美女主播一级成人毛片| 青青草原国产免费av观看| 亚洲日本精品一区二区|