VB.NET利用openXML读取EXCEL数据(一)
我学问浅薄,是VB的死忠。
因为个人爱好,喜欢编编程序,提高工作效率。一直在用vb6,没有改变。
因为需要我在21年学了vb.net,因为64位的office无法使用vb6代码。我原来的代码需要将excel数据导入word,以前一直用oledb。但很多同事没有安装access引擎,wps的根本就没有,下载了access引擎又和源office冲突,调试很麻烦,很多又装不上。于是准备改用openxml。
用openxml问题又来了,网上全是C#的openxml,根本就没有vb.net代码。研究了1个月,终于搞定了如何读excel文件,虽然很多还是不懂,但基本可以用了。我认为用openxml写excel会更难,需要的知识更多。
现在我把vb.net的关于openxml的代码共享出来,给予所有准备用vb.net的盆友躲坑用,也请专业人士给予指教建议和帮助。
一、Excel的workbook对象的建立
为了操作简单,我编写的类,完全是对应Excel com加载项的操作方法,把多余的忽略掉了。比如:取单元格的值,excel是xlbook.worksheets(sheetname).cells(1,1).value,在openxml中,我就设置成了xmlclass.getcellvalue(sheetname,“A1”)
先引用:
Imports DocumentFormat.OpenXml
'Imports DocumentFormat.OpenXml.Office
Imports DocumentFormat.OpenXml.Packaging
'Imports DocumentFormat.OpenXml.Presentation
Imports DocumentFormat.OpenXml.Wordprocessing
Imports DocumentFormat.OpenXml.Spreadsheet
Imports System
Imports System.IO
Imports System.Linq
Imports System.Xml
Imports System.Collections.Generic
Imports System.Collections
Imports System.Text.RegularExpressions
建立一个workbook对象,这个和vb操作workbook一样
‘’’
‘’’ 取得工作簿对象
‘’’
‘’’ 文件名称
‘’’
‘’’
Private Function xmlGetWorkbook(ByVal BookFileName As String) As Boolean
On Error GoTo csErr
Dim fileStream As New FileStream(BookFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
spreadsheetDocument = spreadsheetDocument.Open(fileStream, False)
xlBookPart = spreadsheetDocument.WorkbookPart
Return True
csErr:
Debug.Print(“in xmlGetWorkbook,err:” & Err.Description)
Return False
End Function
这个和网上的c#代码基本一致,不同的是用了FileStream打开文件。 网上代码大部分是直接打开,这样存在一个问题,就是excel文件成为只读,被占用了。
(未完待续)