
正文
vb.net读取xlsx的简单介绍
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
vb.net EXCEL 问题
使用了VB.NET开发一个访问excel读取数据并修改的小程序,有一些经验性的东西和大家共享,如果有误还请大家指正。
大致分为这样几个部分来说明:
1、 准备部分:
准备部分我们需要添加excel library的引用到工程中:我使用office2003,它的库文件为 Microsoft excel 11.0 object library。如果使用excel2000,那么它使用的是Microsoft excel 9.0 object library。
有需要时,我们添加Imports 命名空间。
我在这个程序中只是访问了excel的数据,不需要命名空间了哈。
2、 声明一些对象:
这些对象并不是都需要,前面三个应该有,后面的,你需要什么对象就声明:
Dim excelapp As Excel.Application ‘声明一个application对象
Dim excelworkbook As Excel.Workbook ‘声明一个工作簿对象
Dim excelsheet As Excel.Worksheet ‘声明一个工作表对象
等等…如:
Dim excelrange As Excel.Range ‘声明一个范围对象
3、 访问一个excel文件:
excelapp = New Excel.Application
excelworkbook = excelapp.Workbooks.Open(strfile) ‘访问到工作簿:这个strfile 是文件的路径,我从打开文件对话框中得到的。
excelsheet = excelworkbook.Sheets.Item(1) ‘访问到工作表:item使用索引值来得到sheet对象的引用
excelsheet.activate
我们可以得到此文件中的值:
定义一个string变量:
Dim strcellvalue as string
Strcellvalue=excelsheet.cells(1,1).value ‘得到A1单元格的内容。
修改的时候反过来就可以了:
excelsheet.cells(1,1).value= Strcellvalue
4、 善后:
在程序的每一个退出口操作excel对象,保存或者不保存:
Excelworkbook.save
Excelworkbook.close
Excelapp=nothing
5其它:
需要注意~上面的代码需要一些容错机制,比如:
If Not excelworkbook Is Nothing Then 这样的话来达到程序的正确运行
需要判断现在excel又没有打开。如果有excel进程正在运行。你的代码很可能会影响到打开的excel,像Excelworkbook.close这样的语句虽然前面已经很好的唯一指定了工作簿,但不能很武断的进行鲁莽的操作,我们需要判断现在excel的运行情况。
另外,VB.NET 读取Excel 2007的xlsx文件和读取老的.xls文件是一样的,都是用Oledb读取,仅仅连接字符串不同而已。读取xlsx 用的是Microsoft.Ace.OleDb.12.0;具体操作方法如下:
Public Shared Function GetExcelToDataTableBySheet(ByVal FileFullPath As String, ByVal SheetName As String) As DataTable
'string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + FileFullPath + ";Extended Properties='Excel 8.0; HDR=NO; IMEX=1'"; //此连接只能操作Excel2007之前(.xls)文件
Dim strConn As String = ("Provider=Microsoft.Ace.OleDb.12.0;" "data source=") + FileFullPath ";Extended Properties='Excel 12.0; HDR=NO; IMEX=1'"
'此连接可以操作.xls与.xlsx文件
Dim conn As New OleDbConnection(strConn)
conn.Open()
Dim ds As New DataSet()
Dim odda As New OleDbDataAdapter(String.Format("SELECT * FROM [{0}]", SheetName), conn)
'("select * from [Sheet1$]", conn);
odda.Fill(ds, SheetName)
conn.Close()
Return ds.Tables(0)
End Function
读取Excel文件时,可能一个文件中会有多个Sheet,因此获取Sheet的名称是非常有用的。根据Excel物理路径获取Excel文件中所有表名的具体操作方法如下:
Public Shared Function GetExcelSheetNames(ByVal excelFile As String) As [String]()
Dim objConn As OleDbConnection = Nothing
Dim dt As System.Data.DataTable = Nothing
Try
'string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + excelFile + ";Extended Properties='Excel 8.0; HDR=NO; IMEX=1'"; //此连接只能操作Excel2007之前(.xls)文件
Dim strConn As String = ("Provider=Microsoft.Ace.OleDb.12.0;" "data source=") + excelFile ";Extended Properties='Excel 12.0; HDR=NO; IMEX=1'"
'此连接可以操作.xls与.xlsx文件
objConn = New OleDbConnection(strConn)
objConn.Open()
dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
If dt Is Nothing Then
Return Nothing
End If
Dim excelSheets As [String]() = New [String](dt.Rows.Count - 1) {}
Dim i As Integer = 0
For Each row As DataRow In dt.Rows
excelSheets(i) = row("TABLE_NAME").ToString()
i += 1
Next
Return excelSheets
Catch
Return Nothing
Finally
If objConn IsNot Nothing Then
objConn.Close()
objConn.Dispose()
End If
If dt IsNot Nothing Then
dt.Dispose()
End If
End Try
End Function
相关问答
Q1: vb.net怎么访问excel表格
vb.net读取xlsx我的是2007版本vb.net读取xlsx,其它类似
1.在工程中引用Microsoft Excel 12.0 Object Library
2、在通用对象的声明过程中定义EXCEL对象vb.net读取xlsx:
Dim xlApp As Excel.Application
Dim xlBook As Excel.WorkBook
Dim xlSheet As Excel.Worksheet
3、在程序中操作VB.NET EXCEL常用命令vb.net读取xlsx:
Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
Set xlBook = xlApp.Workbooks.Open("文件名") '打开已经存在的EXCEL工件簿文件
xlApp.Visible = True '设置EXCEL对象可见(或不可见)
Set xlSheet = xlBook.Worksheets("表名") '设置活动工作表
xlSheet.Cells(row, col) =值 '给单元格(row,col)赋值
xlSheet.PrintOut '打印工作表
xlBook.Close (True) '关闭工作簿
xlApp.Quit '结束EXCEL对象
Set xlApp = Nothing '释放xlApp对象
xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL启动宏 xlBook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏
还有很多vb.net读取xlsx,这个要自己慢慢摸索
Q2: VB.NET获取Excel单元格内容
Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim xlRange As Excel.Range
Dim strTmp As String = ""
xlApp = CreateObject("Excel.Application")
xlBook = xlApp.Workbooks.Open(txtfileName.Text)
xlSheet = xlBook.Worksheets(1)
xlApp.Visible = False
xlRange = xlSheet.Cells(1, 1)
strTmp = xlRange.Value'读取第一行第一列值,其它vb.net读取xlsx的vb.net读取xlsx你自己可以写
xlApp.Application.Visible = False
xlBook.Close()
xlApp = Nothing'"交还控制给Excel
xlBook = Nothing
xlSheet = Nothing
Q3: vb.net怎么把excel 读到DataSet中?
可以参考Spire.XLS for .NET关于数据导入导出vb.net读取xlsx的方法。
excel数据导入dataset如下代码vb.net读取xlsx:
'创建Workbook对象并加载Excel文档
Dim workbook As New Workbook()
workbook.LoadFromFile("F:\ExportData.xlsx", ExcelVersion.Version2013)
'获取第一张sheet
Dim sheet As Worksheet = workbook.Worksheets(0)
'设置range范围
Dim range As CellRange = sheet.Range(sheet.FirstRow, sheet.FirstColumn, sheet.LastRow, sheet.LastColumn)
'输出数据, 同时输出列名以及公式值
Dim dt As DataTable = sheet.ExportDataTable(range, True, True)
vb.net读取xlsx的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、vb.net读取xlsx的信息别忘了在本站进行查找喔。


![【高三教程】[8517]阅读:8课时击破记叙文阅读高频考点 mp4+doc (王帆) 【高三教程】[8517]阅读:8课时击破记叙文阅读高频考点 mp4+doc (王帆)](https://www.04ip.com/template/qe/style/noimg/18.jpg)



