【发布时间】:2016-04-07 07:34:44
【问题描述】:
目前我有一个 1500 行和 9 列的 excel 文件。每次我的winform加载时,我都希望将excel文件中的记录加载到datagridview中。我正在使用 Microsoft office interop 将记录导入 datagridview,但速度太慢了。
所以我的问题是,我还有什么其他方法可以加快这个过程?我该怎么做?
Dim xlApp As Microsoft.Office.Interop.Excel.Application
Dim xlWorkBook As Microsoft.Office.Interop.Excel.Workbook
Dim xlWorkSheet As Microsoft.Office.Interop.Excel.Worksheet
xlApp = New Microsoft.Office.Interop.Excel.Application
xlWorkBook = xlApp.Workbooks.Open("C:\Install\Data.xlsx")
xlWorkSheet = xlWorkBook.Sheets("sheet1")
Dim countRows As Integer = xlWorkSheet.UsedRange.Rows.Count()
For i As Integer = 2 To countRows
newVersionRow = VersionDBDataSet.IEVersion.NewIEVersionRow()
newVersionRow.PC_Name = xlWorkSheet.Cells(i, 1).value.ToString()
newVersionRow.PC_Status = xlWorkSheet.Cells(i, 2).value.ToString()
newVersionRow.svcKBNumber = xlWorkSheet.Cells(i, 3).value.ToString()
newVersionRow.svcVersion = xlWorkSheet.Cells(i, 4).value.ToString()
newVersionRow.Last_Updated = DateTime.Parse(xlWorkSheet.Cells(i, 5).value.ToString())
newVersionRow.Patches = Integer.Parse(xlWorkSheet.Cells(i, 6).value)
newVersionRow.Uptime = Integer.Parse(xlWorkSheet.Cells(i, 7).value)
newVersionRow.Count = Integer.Parse(xlWorkSheet.Cells(i, 8).value)
newVersionRow.Offline = Integer.Parse(xlWorkSheet.Cells(i, 9).value)
VersionDBDataSet.IEVersion.Rows.Add(newVersionRow)
If newVersionRow.PC_Status = "Online" Then
numofOnline += 1
lblOnlinePC.Text = numofOnline
Else
numofOffline += 1
lblOfflinePC.Text = numofOffline
End If
Next
xlWorkBook.Close()
xlApp.Quit()
releaseObject(xlApp)
releaseObject(xlWorkBook)
releaseObject(xlWorkSheet)
【问题讨论】:
-
贴出你目前做的代码
-
@Dan 好的,我已经发布了代码
-
您是否尝试过使用
OleDbDataReader? -
@rheitzman 我正在用这个website 尝试它,它的速度相当快,但我的第 7 和第 9 列将是空的 o.o
-
@rheitzman 没关系我发现了问题.. 显然我的标题文本(例如离线(天))需要与我的数据表的列名(例如离线)相同..解决这个问题,在我将excel文件导入datagridview之后,我将更改标题文本
标签: vb.net excel winforms datagridview