我正在尝试编写一个导入函数来从 excel 文件中获取数据。我目前的做法如下:
Private Sub ReadExcel(ByVal childform As PhoneDiag.frmData, ByVal FileName As String)
Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
xlApp = New Excel.ApplicationClass
xlWorkBook = xlApp.Workbooks.Open(FileName)
xlWorkSheet = xlWorkBook.Worksheets(1)
Dim columnrange = xlWorkSheet.Columns
Dim therange = xlWorkSheet.UsedRange
''Add rows by column
For rCnt = 2 To therange.Rows.Count
Dim rowArray(therange.Columns.Count) As String
For cCnt = 1 To therange.Columns.Count
Dim Obj = CType(therange.Cells(rCnt, cCnt), Excel.Range)
Dim celltext As String
celltext = Obj.Value.ToString
rowArray((cCnt - 1)) = celltext
Next
childform.datagridSample.Rows.Add(rowArray)
Next
'' make sure we close the excel.exe service after use
xlWorkBook.Close()
xlApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkBook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkSheet)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
End Sub
当然,问题在于它运行得非常糟糕。据我所知,它很可能归结为这一行:
Dim Obj = CType(therange.Cells(rCnt, cCnt), Excel.Range)
我需要的只是单元格中的文本,而不是为每个单元格创建一个对象(然后不将它们发送到垃圾收集)。有没有更简单的方法来获取文本?
理想情况下,如果我可以获得获取单元格文本值的方法,我希望将多个 rowArray() 添加到主数组并稍后更新程序的值。
如果您看到任何其他性能提示,请告诉我。将不胜感激。=b
编辑:我也意识到,如果我要创建一个主数组(比如 mArr)来保存所有数据,我有两个选择。让 mArr 大而子阵列小,还是 mArr 小而子阵列容纳更多信息,在性能方面会更好吗?
我问是因为将要导入的文件的行数多于列数,所以我想知道是否有任何“设置”的方法。