通过vb.net 和NPOI实现对excel的读操作
通过vb.net 和NPOI实现对excel的读操作,很久很久前用过vb,这次朋友的代码是vb.net写的需要一个excel的操作,
就顾着着实现功能了,大家凑合着看吧
Option Explicit On
Imports NPOI.SS.UserModel
Imports System.IO
Public Class ExcelHelper
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))
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)
'读取文件的 byte()
Dim bytes() As Byte = New Byte(fileStream.Length) {}
fileStream.Read(bytes, 0, bytes.Length)
fileStream.Close()
'把 byte()转换成 Stream
Dim stream As Stream = New MemoryStream(bytes)
Return stream
End Function
End Class
浙公网安备 33010602011771号