'導入命名空間

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. 14. The Realities of Telecommuting 远程办公的现状

    14. The Realities of Telecommuting 远程办公的现状 (1) Telecommuting——substituting the computer for the trip ...

  2. android 混淆基本知识

    官网介绍:https://www.guardsquare.com/en/proguard/manual/introduction android 开发文档:https://developer.andr ...

  3. 利用ONENET平台透传电脑截图

    这个仅供技术学习了 可以用在远程监控等行业,不用传统工具用的公网ip等比较坑爹的东西 还是比较方便的 需要的话请联系微信nbdx123

  4. Web API使用HttpResponseMessage与HttpResponseException的差异 HttpResponseMessage 返回类型

    在 Web API 中提供了 HttpResponseMessage 与 HttpResponseException 用于处理返回讯息,HttpResponseMessage 用于返回一个来自于客户端 ...

  5. rand_1tom 产生 rand_1ton

    给定一个等概率随机产生1~M的随机函数rand1ToM如下: public int rand1ToM(int m) { return (int) (Math.random() * m) + 1; } ...

  6. B树之C语言实现(包含查找、删除、插入)

    B树的定义 一棵m阶B树(Balanced Tree of order m),或为空树,或为满足下列特性对的m叉树. 树中每个结点最多含有m棵子树. 若根结点不是叶子结点,则至少有2个子树. 除根结点 ...

  7. cant found Microsoft.VSSDK.BuildTools.15.0.26201

    如果在vs扩展开发中出现 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 Failed to load 'C:\程序\EncodingNormalior\packages\Microsoft. ...

  8. 异步请求获取JSON数据

    json格式的数据广泛应用于异步请求中前后端的数据交互,本文主要介绍几种使用场景和使用方法. <script type="text/javascript"> funct ...

  9. Java SE核心之一:常用类,包装类,其他基本数据类型包装类。

    在Java继承体系中,java.lang.Object类位于顶端(是所有对象的直接或间接父类).如果一个类没有写extends关键字声明其父类,则该类默认继承java.lang.Object类.Obj ...

  10. 记Booking.com iOS开发岗位线上笔试

    今晚参加了Booking的iOS职位线上笔试,结束后方能简单归纳一下. 关于测试内容: Booking采用了HackerRank作为测试平台,测试总时长为75分钟,总计4道题. 测试之前我很紧张,因为 ...