• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

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

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

    關鍵詞:C#;Excel;NPOI;導出數(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)公式計算、單元格高級樣式等復雜操作。因此,本文借助第三方組件NPOI的方式來實現(xiàn)Excel數(shù)據(jù)的批量導出。

    2 數(shù)據(jù)導出設計思路

    2.1基本思路

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

    1) 選擇需要導出的數(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ù)按格式要求分別填入工作表對應的單元格;

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

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

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

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

    Excel包括的核心元素按照層次由上至下有工作簿(也就是一個xls文件)、工作表(也就是一個sheet)、表格中一個行、表格中的一個單元格。與此相對應,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,對應的接口為位于NPOI.SS.UserModel 空間下的IWorkbook、ISheet、IRow、ICell,分別對應Excel文件、工作表、行、單元格[3]。

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

    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 設置單元格字體

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

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

    1)設置字體名稱

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

    font.FontName=”宋體”;

    2)設置字號

    與字號相關的屬性有FontHeight和FontHeightInPoints,通常使用FontHeightInPoints來設置,代碼如下:

    font.FontHeightInPoints = 10; //設置字號

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

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

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

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

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

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

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

    3.5 導出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ù)據(jù)的Excel文件創(chuàng)建在指定的目錄中,數(shù)據(jù)的導出工作完成。

    wkBook.Write(fs);

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

    public static bool ExportToExcel(DataSet ds, string fName)

    { HSSFWorkbook wkBook = new HSSFWorkbook();

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

    bool res = true;

    FileStream fs = null;

    try

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

    //導出表頭

    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++;}

    //導出內(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 結束語

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

    參考文獻:

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

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

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

    新竹县| 玉溪市| 海南省| 武定县| 沽源县| 扬州市| 苏尼特左旗| 依兰县| 铜鼓县| 平山县| 乌恰县| 新平| 磐安县| 乌苏市| 环江| 宽甸| 庐江县| 专栏| 安顺市| 石台县| 涟水县| 商丘市| 金昌市| 湖南省| 北流市| 泾川县| 云浮市| 华宁县| 呈贡县| 辽宁省| 铁力市| 乌兰浩特市| 瓦房店市| 疏附县| 潮州市| 汉源县| 定兴县| 义马市| 临西县| 那曲县| 德江县|