看到此標題相信網上已經有許多關於NPOI的文章了~
所以特點,說明和一些名詞等等就不多說了
還是附一下NPOI網址
進入正文
這裡示範一套較完整較常用的範例給大家
產生Excel方式大同小異
匯出方式大致上常用有兩種,一種是程式匯出至指定路徑,一種是在Web上匯出強制下載
這邊就先以程式匯出至指定路徑開始吧~
我使用的版本較舊為1.2.5.0(聽說新版有新功能,但較少用到以後再說吧)
首先先加入參考:
NOPI.dll
加入命名:
Imports NPOI.HSSF.UserModel ---> 提供讀寫Microsoft Excel XLS格式功能
程式部分以下:
Dim dtbl As DataTable --->這邊用最常見的DataTable 來給資料 (這邊的DataTable就請各位自行加入要的值囉~我就先略過了,以下我將會直接使用)
Dim intSheet As Integer = 1 --->給迴圈使用
Dim sheetName As String = "工作列" --->設定工作列名稱
Dim tmpPath As String = "D:\XXX\" --->設定檔案路徑
Dim fileName As String = "123.xls" --->設定檔名
接著開始宣告元件
Dim workbook As New HSSFWorkbook() --->Model
Dim sheet As HSSFSheet = workbook.CreateSheet(sheetName) --->新增試算表
Dim dataRow As HSSFRow = sheet.CreateRow(0) --->新增表頭
Dim styleCenter As HSSFCellStyle = workbook.CreateCellStyle() --->儲存格格式樣式
Dim font As HSSFFont = workbook.CreateFont() --->字體樣式
//設定儲存格樣式
font.FontHeightInPoints = 12
font.FontName = "新細明體"
styleCenter.SetFont(font)
styleCenter.BorderTop = NPOI.SS.UserModel.BorderStyle.THIN -->給予邊框
styleCenter.BorderLeft = NPOI.SS.UserModel.BorderStyle.THIN
styleCenter.BorderBottom = NPOI.SS.UserModel.BorderStyle.THIN
styleCenter.BorderRight = NPOI.SS.UserModel.BorderStyle.THIN
//此試算表的表頭第幾欄填入資料
dataRow.CreateCell(0).SetCellValue("天數")
dataRow.CreateCell(1).SetCellValue("午餐")
dataRow.CreateCell(2).SetCellValue("晚餐")
dataRow.CreateCell(3).SetCellValue("晚餐")
//給予樣式
dataRow.GetCell(0).CellStyle = styleCenter
dataRow.GetCell(1).CellStyle = styleCenter
dataRow.GetCell(2).CellStyle = styleCenter
dataRow.GetCell(3).CellStyle = styleCenter
For i As Integer = 0 To dtbl.Rows.Count - 1
'從第一列開始
dataRow = sheet.CreateRow(intSheet)
//此試算表的第幾列第幾欄填入資料
dataRow.CreateCell(0).SetCellValue(dtbl(i)("day").ToString())
dataRow.CreateCell(1).SetCellValue(dtbl(i)("breakfast").ToString())
dataRow.CreateCell(2).SetCellValue(dtbl(i)("lunch").ToString())
dataRow.CreateCell(3).SetCellValue(dtbl(i)("dinner").ToString())
dataRow.GetCell(0).CellStyle = styleCenter
dataRow.GetCell(1).CellStyle = styleCenter
dataRow.GetCell(2).CellStyle = styleCenter
dataRow.GetCell(3).CellStyle = styleCenter
intSheet += 1
Next
'//新增儲存位置
Dim filePath As New FileStream(tmpPath &fileName , FileMode.Create)
workbook.Write(filePath)
'用完就隨手關
filePath.Close()
filePath = Nothing
workbook = Nothing
大功告成!!!!
大致上會長這樣~
Web的部分就等到下一次見囉~
若有錯誤或問題歡迎留言
