2010年6月13日 星期日

在 Server 端存取 Excel 檔案的利器:NPOI Library v1.21(改寫成VB範例)

範例一: 下列的 ASP.NET 程式碼可以生成一個空白的 Excel 檔案,並且添加三個指定名稱的試算表
 Imports System.IO 
Imports NPOI.HSSF.UserModel
Imports NPOI.HPSF
Imports NPOI.POIFS.FileSystem

Protected Sub Button1_Click() Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'== 本範例的資料來源:http://msdn.microsoft.com/zh-tw/ee818993.aspx

Dim workbook As HSSFWorkbook = New HSSFWorkbook()
Dim ms As MemoryStream = New MemoryStream() '==需要 System.IO命名空間

'== 新增試算表。
'== 生成一個空白的 Excel 檔案,並且添加三個指定名稱的試算表 Sheet
workbook.CreateSheet("試算表 Sheet A")
workbook.CreateSheet("試算表 Sheet B")
workbook.CreateSheet("試算表 Sheet C")

workbook.Write(ms)
'== Excel檔名,請寫在最後面 filename的地方
Response.AddHeader("Content-Disposition", String.Format("attachment; filename=你的檔名.xls"))
Response.BinaryWrite(ms.ToArray())

'== 釋放資源
workbook = Nothing '== C#為 null
ms.Close()
ms.Dispose()
End Sub

範例二: 添加一個指定名稱的試算表,在裡面添加資料
 Imports System.IO 
Imports NPOI.HSSF.UserModel
Imports NPOI.HPSF
Imports NPOI.POIFS.FileSystem


Protected Sub Button1_Click() Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'== 本範例的資料來源:http://msdn.microsoft.com/zh-tw/ee818993.aspx

Dim workbook As HSSFWorkbook = New HSSFWorkbook()
Dim ms As MemoryStream = New MemoryStream() '==需要 System.IO命名空間

'== 新增試算表 Sheet名稱。
Dim u_sheet As HSSFSheet = workbook.CreateSheet("My Sheet")

'== 插入資料值。
u_sheet.CreateRow(0).CreateCell(0).SetCellValue("0000")
u_sheet.CreateRow(1).CreateCell(0).SetCellValue("1111")
u_sheet.CreateRow(2).CreateCell(0).SetCellValue("2222")
u_sheet.CreateRow(3).CreateCell(0).SetCellValue("3333")
u_sheet.CreateRow(4).CreateCell(0).SetCellValue("4444")
u_sheet.CreateRow(5).CreateCell(0).SetCellValue("5555")

u_sheet.CreateRow(6).CreateCell(1).SetCellValue("6666") '== CreateCell() 可設定為同一列(Row)的 [第幾個格子]


workbook.Write(ms)

'== Excel檔名,請寫在最後面 filename的地方
Response.AddHeader("Content-Disposition", String.Format("attachment; filename=你的檔名.xls"))
Response.BinaryWrite(ms.ToArray())

'== 釋放資源
workbook = Nothing '== C#為 null
ms.Close()
ms.Dispose()
End Sub

範例三: 設定儲存格的背景色
 Imports System.IO 
Imports NPOI.HSSF.UserModel
Imports NPOI.HPSF
Imports NPOI.POIFS.FileSystem


Protected Sub Button1_Click() Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'== 本範例的資料來源:http://msdn.microsoft.com/zh-tw/ee818993.aspx

Dim workbook As HSSFWorkbook = New HSSFWorkbook()
Dim ms As MemoryStream = New MemoryStream() '==需要 System.IO命名空間

'== 新增試算表 Sheet名稱。
Dim u_sheet As HSSFSheet = workbook.CreateSheet("My Sheet")

'== 建立儲存格樣式(底色)。
Dim style1 As HSSFCellStyle = workbook.CreateCellStyle()
style1.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.BLUE.index2 '==藍色底的儲存格
style1.FillPattern = HSSFCellStyle.SOLID_FOREGROUND

Dim style2 As HSSFCellStyle = workbook.CreateCellStyle()
style2.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.YELLOW.index2 '==黃色底的儲存格
style2.FillPattern = HSSFCellStyle.SOLID_FOREGROUND


'== 設定儲存格樣式與資料。
Dim cell As HSSFCell = u_sheet.CreateRow(0).CreateCell(0)
cell.CellStyle = style1
cell.SetCellValue("0000") '== 插入資料值。

cell = u_sheet.CreateRow(1).CreateCell(0)
cell.CellStyle = style2
cell.SetCellValue("1111") '== 插入資料值。

cell = u_sheet.CreateRow(2).CreateCell(0)
cell.CellStyle = style1
cell.SetCellValue("2222") '== 插入資料值。

cell = u_sheet.CreateRow(3).CreateCell(0)
cell.CellStyle = style2
cell.SetCellValue("3333") '== 插入資料值。

cell = u_sheet.CreateRow(4).CreateCell(0)
cell.CellStyle = style1
cell.SetCellValue("4444") '== 插入資料值。


workbook.Write(ms)
'== Excel檔名,請寫在最後面 filename的地方
Response.AddHeader("Content-Disposition", String.Format("attachment; filename=你的檔名.xls"))
Response.BinaryWrite(ms.ToArray())

'== 釋放資源
workbook = Nothing '== C#為 null
ms.Close()
ms.Dispose()
End Sub

轉載連結 http://www.dotblogs.com.tw/mis2000lab/archive/2010/05/07/npoi_excel_vb_asp_net.aspx.aspx

沒有留言:

張貼留言