'導入命名空間

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. linux mysql 5.7.25 安裝

    1.下载 https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz 2.解压 tar ...

  2. C程序编程规范一

    和身边一些学弟们接触发现他们的编程习惯不是太好,对一些基本的规范不重视,今天有时间写一些基本的规范给一些刚入门的新手们,高手可忽略. 首先做项目来说需要建立工程,一般需要几个到几百个上上千个C文件,这 ...

  3. SQL Server PageIOLatch和PageLatch

    Latch是轻量级的锁,它是SQL Server内部用来同步资源访问的一个数据结构,使数据的访问同步有序,这意味着,当一个线程获得资源R的Latch的独占使用权时,如果其他的线程也想访问这个Latch ...

  4. H5内联视频

    概述 微信上很多H5页面都会有会动的像视屏的页面,这样的效果很棒.从技术上来说,这个其实就是视屏,不过没有控制播放的按钮罢了.它们还有一个专业的名字--内联视频.下面我把自己对内联视屏的学习记录下来, ...

  5. 你可能不知道的github语法——图标

    概述 逛github,看到别人的仓库的description里面有各种炫丽的图标,不禁有点好奇,于是去查了下怎么写真的被我查到了,记录在下面,供以后开发时参考,相信对其他人也有用. 图标 可以先看看g ...

  6. struts2框架学习笔记2:配置详解

    核心配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC ...

  7. centos7的ssh服务连接

    ---恢复内容开始--- SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH 是 ...

  8. day 75vue 脚手架学习 脚手架的使用

    前情提要: vue 自定化开发工具  (vue-cli的使用) 一:安装脚手架,以及准备 1: 下载地址, https://nodejs.org/en/download/ 2:如果下载成功,在cmd ...

  9. String-intern方法举例分析其含义

    之后重新理解这个知识点时,又写了一些小例子 String a1 = new String("str01") ; String a2 = "str01" ; Sy ...

  10. jenkins配置邮件 -- com.sun.mail.smtp.SMTPSenderFailedException: 550 5.7.1 Client does not have permissions to send as this sender

    jenkins配置邮件设置 发送邮件测试时,报错: com.sun.mail.smtp.SMTPSenderFailedException: Client does not have permissi ...