'導入命名空間

Imports NPOI.HSSF.UserModel
Imports NPOI.HPSF
Imports NPOI.POIFS.FileSystem

Private Sub A1()'方法1-導到Excel

Dim workbook As HSSFWorkbook = New HSSFWorkbook()

Dim fs = New FileStream("C:\test1.xls", FileMode.Create) '建立一個Excel檔

Dim sheet As HSSFSheet = workbook.CreateSheet(" Sheet1") ' 新增試算表 Sheet名稱
Dim row As HSSFRow = sheet.CreateRow(0) '定義標題
row.CreateCell(0).SetCellValue("標題1")
row.CreateCell(1).SetCellValue("標題2")

Dim i As Integer

For i = 1 To 10

Dim row_body As HSSFRow = sheet.CreateRow(i)

Dim TP0 As String="內容1"

row_body.CreateCell(0).SetCellValue(TP0)

Dim TP0 As String="內容2"

row_body.CreateCell(1).SetCellValue(TP0)

Next

sheet.AutoSizeColumn(1) '自動列寬

workbook.Write(fs) '把該workbook寫到檔案裡
fs.Close() '释放对象
row = Nothing '释放对象
sheet = Nothing '释放对象

workbook = Nothing '释放对象

System.Diagnostics.Process.Start("C:\test1.xls") '打開excel檔案

End Sub

Private Sub A2()'方法2-導到Excel

Dim workbook As HSSFWorkbook = New HSSFWorkbook()
Dim cell As HSSFCell

Dim font As HSSFFont = workbook.CreateFont
Dim cs As HSSFCellStyle = workbook.CreateCellStyle
font.FontHeightInPoints = 12'設定字體大小
font.FontName = "宋体"'設定字體
cs.SetFont(font)

Dim mystyle1 As HSSFCellStyle = workbook.CreateCellStyle
mystyle1.DataFormat = HSSFDataFormat.GetBuiltinFormat("@")'設定格式1

Dim mystyle2 As HSSFCellStyle = workbook.CreateCellStyle
mystyle2.DataFormat = HSSFDataFormat.GetBuiltinFormat("0")'設定格式2

Dim mystyle3 As HSSFCellStyle = workbook.CreateCellStyle
mystyle3.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00")'設定格式3

Dim TP0 As String
Dim TP1 As Double

Dim fs = New FileStream("C:\test2.xls", FileMode.Create) '準備建立一個Excel檔
Dim sheet As HSSFSheet = workbook.CreateSheet("Sheet1") '== 新增試算表 Sheet名稱

Dim row As HSSFRow = sheet.CreateRow(0) '定義標題
row.CreateCell(0).SetCellValue("標題1")
row.CreateCell(1).SetCellValue("標題2")
row.CreateCell(2).SetCellValue("標題3")

For i = 1 To 10

TP0 = "測試1"
cell = sheet.CreateRow(i).CreateCell(0)'注意-和第二列不同CreateRow
cell.CellStyle = mystyle1'使用格式1
cell.SetCellValue(TP0)'填入值

TP0 = 1000.123456
cell = sheet.GetRow(i).CreateCell(1)'注意-和第一列不同GetRow
cell.CellStyle = mystyle2'使用格式2

cell.CellStyle = cs'字體及大小
cell.SetCellValue(TP1)'填入值

TP0 =1000.123456
cell = sheet.GetRow(i).CreateCell(2)
cell.CellStyle = mystyle3'使用格式3
cell.SetCellValue(TP1)'填入值

Next

For i = 0 To 2
sheet.AutoSizeColumn(i) '自動列寬
Next

workbook.Write(fs) '把該workbook寫到檔案裡
fs.Close() '释放对象
sheet = Nothing '释放对象
workbook = Nothing '释放对象
System.Diagnostics.Process.Start("C:\test2.xls") '打開excel檔案

End Sub

Private Sub A3()'方法3-開啟模版文件填入值

Dim fs = New FileStream("C:\test2.xls", FileMode.Open, FileAccess.Read) '打開一個現有的Excel檔
Dim workbook As HSSFWorkbook = New HSSFWorkbook(fs)
Dim cell As HSSFCell

Dim TP0 As String

Dim sheet As HSSFSheet = workbook.GetSheet("Sheet1") '== 打開試算表 Sheet名稱

TP0 = "填入測試"
cell = sheet.CreateRow(11).CreateCell(0)
cell.SetCellValue(TP0)'填入值
sheet.ForceFormulaRecalculation = True
Dim fs1 = New FileStream("C:\test3.xls", FileMode.Create) '另存一個Excel檔
workbook.Write(fs1) '把該workbook寫到檔案裡

fs.Close() '释放L对象
fs1.Close() '释放L对象
sheet = Nothing '释放L对象
workbook = Nothing '释放对象

System.Diagnostics.Process.Start("C:\test3.xls") '打開excel檔案

End Sub

'方法4 由Excel導出

Private Sub A4()

Dim i, n As Integer

n = ImportExcel("C:\test4.xls").Rows.Count'筆數

For i = 1 To n

DataGridView1.Item(0, i - 1).Value = ImportExcel("C:\test4.xls").Rows(i - 1).Item(0)

Next

End Sub

Public Shared Function ImportExcel(ByVal strSource As String) As DataTable

Dim hssfWorkbook As IWorkbook
Dim sheet As ISheet
Dim rows As System.Collections.IEnumerator
Dim dt As DataTable
Dim icount As Int32
Dim row As IRow
Dim dr As DataRow
Dim cell As ICell

hssfWorkbook = WorkbookFactory.Create(FileToStream(strSource)) '讀取Excel文檔
sheet = hssfWorkbook.GetSheetAt(0) '读取当前表数据
rows = sheet.GetRowEnumerator() '取得表数据值

icount = 0
dt = New DataTable()

While rows.MoveNext()

icount = icount + 1
row = rows.Current
dr = dt.NewRow
For i As Int32 = 0 To row.LastCellNum
cell = row.GetCell(i)
If cell Is Nothing Then
'dr(i) = DBNull.Value
Else
If icount = 1 Then
dt.Columns.Add(cell.ToString)
End If
dr(i) = cell.ToString
End If

Next
dt.Rows.Add(dr)
End While
dt.Rows.RemoveAt(0)
Return dt

End Function

Public Shared Function FileToStream(ByVal fileName As String) As Stream

Dim fileStream As FileStream
fileStream = New FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read) '打開Excel文檔
Dim bytes() As Byte = New Byte(fileStream.Length) {}
fileStream.Read(bytes, 0, bytes.Length) '讀取文檔的 byte()
fileStream.Close()
Dim stream As Stream = New MemoryStream(bytes) '把 byte()轉換成 Stream
Return stream

End Function

vb.net 使用NPOI控制Excel檔的更多相关文章

  1. NPOI控制Excel格式

    1.//sheet.SetColumnWidth(3, 50 * 256);  控制第三列宽,单位为1/256个字符 dataRow.Height = 18 * 20; 控制行高,单位为1/20点 s ...

  2. 在 Server 端存取 Excel 檔案的利器:NPOI Library

    转处 http://msdn.microsoft.com/zh-tw/ee818993.aspx Codeplex 軟體套件(Package)資訊 套件名稱 NPOI 作者 tonyqus, huse ...

  3. 通过vb.net 和NPOI实现对excel的读操作

    通过vb.net 和NPOI实现对excel的读操作,很久很久前用过vb,这次朋友的代码是vb.net写的需要一个excel的操作, 就顾着着实现功能了,大家凑合着看吧 Option Explicit ...

  4. NPOI操作Excel辅助类

    /// <summary> /// NPOI操作excel辅助类 /// </summary> public static class NPOIHelper { #region ...

  5. 使用NPOI创建Excel

    一.NPOI 函式庫: NPOI 函式庫檔案有七個,NPOI 函式庫可以在 http://npoi.codeplex.com 中下載,分別是: NPOI.DLL:NPOI 核心函式庫. NPOI.DD ...

  6. NPOI之Excel——合并单元格、设置样式、输入公式

    首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: //建立空白工作簿 IWorkbook workbook = new HSSFWorkboo ...

  7. NPOI读写Excel组件封装Excel导入导出组件

    后台管理系统多数情况会与Excel打交道,常见的就是Excel的导入导出,对于Excel的操作往往是繁琐且容易出错的,对于后台系统的导入导出交互过程往往是固定的,对于这部分操作,我们可以抽离出公共组件 ...

  8. NPOI导出Excel (C#) 踩坑 之--The maximum column width for an individual cell is 255 charaters

    /******************************************************************* * 版权所有: * 类 名 称:ExcelHelper * 作 ...

  9. Asp.Net 使用Npoi导出Excel

    引言 使用Npoi导出Excel 服务器可以不装任何office组件,昨天在做一个导出时用到Npoi导出Excel,而且所导Excel也符合规范,打开时不会有任何文件损坏之类的提示.但是在做导入时还是 ...

随机推荐

  1. powershell ParameterSet解析

    自定义PowerShell函数,在设置参数的时候中,可以将参数设置为某些情况下可选,某些条件下又设置为必选. 示例代码从网站复制的. function Connect-Somewhere { [Cmd ...

  2. 2.3.7synchronized代码块有volatile同步的功能

    关键字synchronized可以使多个线程访问同一个资源具有同步性,而且他还具有将线程工作内存中的私有变量与公共内存中的变量同步的功能. package com.cky.thread; /** * ...

  3. uniGUI日志的控制

    uniGUI日志的控制 (2015-10-12 08:30:29) 转载▼ 标签: unigui 分类: uniGUI uniGUI本身提供了日志功能,利用uniServerModule.Server ...

  4. uniGUI动态建立Form及释放

    uniGUI动态建立Form及释放 (2015-10-01 14:51:12) 转载▼   分类: uniGUI 用uniGUI开发的项目中,难免要遇到动态建立一个Form,再释放掉,与传统Delph ...

  5. Runtime之成员变量&属性&关联对象

    上篇介绍了Runtime类和对象的相关知识点,在4.5和4.6小节,也介绍了成员变量和属性的一些方法应用.本篇将讨论实现细节的相关内容. 在讨论之前,我们先来介绍一个很冷僻但又很有用的一个关键字:@e ...

  6. AJAX从入门到放弃(一)

    AJAX可以用于创建快速动态的网页(无需重新加载整个网页的情况下,能够更新部分网页的技术) 即异步的Javascript和XML,通过后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新. A ...

  7. python 中numpy中函数hstack用法和作用

    定义: Stack arrays in sequence horizontally (column wise). Take a sequence of arrays and stack them ho ...

  8. .NET手记-Autofac入门Getting Started

    内容主要翻译自官方文档,原文请看:http://autofac.readthedocs.org/en/latest/getting-started/index.html#application-sta ...

  9. win10 + gluon + GPU

    1. 下载教程 可以用浏览器下载zip格式并解压,在解压目录文件资源管理器的地址栏输入cmd进入命令行模式. 也可以 git pull https://github.com/mli/gluon-tut ...

  10. css选择符权重

    css选择符权重 目录 css选择符权重 css选择器权重列表 CSS选择符冲突处理 css选择符权重 css选择器权重列表 选择器 权重 内联样式 1000 ID 0100 CLASS 0010 属 ...