連俊光
摘要:在軟件項目中,筆者常常用到將查詢出來的數據,導出到Excel表格中去的功能,或者將Excel表格中的數據導入到內存中去。該文以使用NPOI導出到Excel為例,對NPOI中的workbook,sheet,row,cell等幾個名詞及具體對應的操作類,類的方法,進行了詳細的講解、使用。
關鍵詞:NPOI;Excel;數據導入導出
中圖分類號:TP317 文獻標識碼:A 文章編號:1009-3044(2017)28-0008-02
1 概述
在日常的工作中,我們習慣通過Excel進行數據的統計、整理,所以在軟件開發中,對從數據庫中查詢的數據導出到Excel是一個必不可少的功能。
2 NPOI的優勢
目前Excel導入導出有多種方法,而今天我們要研究的是通過一個叫做NPOI的組件,進行數據的導入導出。NPOI具有如下優勢:
1) 該插件可以免費使用。
2) 許多Excel的特點都可以使用,比如說表格的樣式等。
3) 有專業的團隊,提供優秀的技術支持。
4) xls, xlsx, docx等格式都可以操作。
5) 面向接口編程,可以在命名空間中查看接口定義。
6) 既能完成文件的導出,也能將Excel導入到系統中。
7) 支持較早的.net Framework版本
8) 有大量的成功案例
9) 較多的技術學習資料。
10) 你不需要在服務器上安裝微軟的Office,可以避免版權問題。
11) 使用起來比Office PIA的API更加方便,更人性化。
12) 你不用去花大力氣維護NPOI,NPOI Team會不斷更新、改善NPOI,絕對省成本。
3 NPOI操作類說明
3.1 工作本對象
HSSFWorkbook表示工作本,它包含幾個重要的函數。函數一是CreateSheet,函數二GetSheetAt,函數三CreateCellStyle,函數四CreateFont,函數五Write(stream),以及HSSFWorkbook本身的無參構造函數
1) 新建一個工作本使用HSSFWorkbook的無參構造函數。
2) 指定sheet對象的創建用函數一,括號內參數為對象索引。
3) 想要得到指定索引的sheet對象,用函數二,括號內參數為對象的索引。
4) 函數四用來新建一個樣式對象,該樣式對象用于單元格。
5) 新建字體對象實用函數五。
6) 函數六是將workbook寫到流中。
3.2 工作表對象
HSSFSheet表示工作表對象,它有三個函數。函數一CreateRow、函數二GetRow、函數三AddMergeRegion、函數四SetColumnWidth
1) 新建索引行用第一個函數。
2) 獲得指定索引指向的行使用第二個函數。
3) 第三個函數可以設置單元格的區域合并。
4) 函數四可是設定列的寬度。
3.3 行對象
HSSFRow表示行對象,它有兩個函數和一個屬性。函數一CreateCell、函數二GetCell,一個屬性為HeightlnPoints。
1) 新建索引行使用函數一。
2) 獲得指定單元格使用函數二。
3) 設定行的高度使用屬性。
3.4 單元格對象
HSSFCell是單元格對象,它有一個函數和兩個屬性。函數一為SetCellValue、屬性一***CellValue、屬性二CellStyle。
1) 用函數一為單元格賦值。
2) 屬性一***可以得到單元格的指定類型的內容。
3) 設定單元格的樣式使用屬性二。
3.5 單元格樣式對象
HSSFCellStyle是單元格樣式對象,函數一SetFont和屬性一Alignment。
1) 字體樣式使用函數一設定
2) 屬性一有三個參數,數字1表示水平居左,數字2表示水平居中,數字3表表示水平居右。
3.6 字體對象
HSSFFont是字體對象。它有兩個屬性。屬性一FontHeightlnPoints、屬性二Boldweight。
1) 屬性一可以用來設置字體大小。
2) 屬性二可以改變字體的粗細。
4 demo操作演示
在VS中新建項目,選擇Visual C#——Windows——Windows窗體應用程序,命名為Test,在Test中,添加——Windows窗體,命名為NPOITest,在NPOI官網(http://npoi.codeplex.com/)下載編譯過后的NPOI類庫,打開,將文件夾內的全部內容復制,將復制的內容粘貼lib文件夾下(若無此文件夾,找到項目所在位置,在項目文件夾內新建),如下圖:
Test項目中添加引用,如下圖:
在NPOITest窗體中,添加一個按鈕和一個DataGridView控件。效果如下:
綁定數據源,此處為做演示,我用了某個管理系統的管理員列表的數據庫數據(大家做測試可以使用自己的數據庫),當窗加載時自動加載數據,如圖4。
5 導出按鈕后臺代碼截圖
6 效果圖
效果圖如圖5所示。
7 結束語
實現了從軟件系統中將數據庫中查詢的數據導出到Excel中,可在實際應用中參考此方法實現數據導出,具有實用價值。
參考文獻:
[1] 魏文勝.Excel與SQLServer數據的相互轉換之方法[J].電腦知識與技術,2007(10):892.
[2] 張麗英.基于.NET的Excel數據批量導入SQL Server的設計與實現[J].南通紡織職業技術學院學報, 2012, 12(1):7-10.
[3] 游向峰.基于ASP.NET的SQL與Excel數據互導的研究與實現[J].電腦知識與技術, 2010(11):8953.endprint