我需要为导出过程创建一个进度条。
我已经有了导出代码。但是,要导出的数据越大,系统挂起的时间就越长,并且不会向用户提供正在执行某些操作的信息。 我需要的是创建一个进度条,至少告知用户进程正在完成。
我不知道放在哪里以及放什么。
我正在使用VS 2013 Ultimate和Excel 2013 ..这是我的导出代码。
Try
Dim xlApp As Microsoft.Office.Interop.Excel.Application
Dim xlWorkBook As Microsoft.Office.Interop.Excel.Workbook
Dim xlWorkSheet As Microsoft.Office.Interop.Excel.Worksheet
Dim misValue As Object = System.Reflection.Missing.Value
Dim i As Integer
Dim j As Integer
xlApp = New Microsoft.Office.Interop.Excel.Application
xlWorkBook = xlApp.Workbooks.Add(misValue)
xlWorkSheet = xlWorkBook.Sheets("sheet1")
For i = 0 To DataGridView1.RowCount - 2
For j = 0 To DataGridView1.ColumnCount - 1
For k As Integer = 1 To DataGridView1.Columns.Count
xlWorkSheet.Cells(1, k) = DataGridView1.Columns(k - 1).HeaderText
xlWorkSheet.Cells(i + 2, j + 1) = DataGridView1(j, i).Value.ToString()
Next
Next
Next
xlWorkSheet.SaveAs("D:\NGPdata.xlsx")
xlWorkBook.Close()
xlApp.Quit()
releaseObject(xlApp)
releaseObject(xlWorkBook)
releaseObject(xlWorkSheet)
Catch ex As Exception
MsgBox(ex.Message & " here")
End Try
Try
Dim res As MsgBoxResult
res = MsgBox("Process completed, Would you like to open file?", MsgBoxStyle.YesNo)
If (res = MsgBoxResult.Yes) Then
Process.Start("D:\NGPdata.xlsx")
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
以及它所需的代码。
Private Sub releaseObject(ByVal obj As Object)
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
obj = Nothing
Catch ex As Exception
obj = Nothing
Finally
GC.Collect()
End Try
End Sub
答案 0 :(得分:0)
修改ProgressBar的属性
value = 0
Maximun = 100
你的代码应该是:
...
Dim Increment as Single
Dim IntMax, currentIndex as Long
currentIndex = 0
intMax = (DataGridView1.RowCount - 2) * (DataGridView1.ColumnCount - 1) * DataGridView1.ColumnCount
For i = 0 To DataGridView1.RowCount - 2
For j = 0 To DataGridView1.ColumnCount - 1
For k As Integer = 1 To DataGridView1.Columns.Count
xlWorkSheet.Cells(1, k) = DataGridView1.Columns(k - 1).HeaderText
xlWorkSheet.Cells(i + 2, j + 1) = DataGridView1(j, i).Value.ToString()
Increment= Int(currentIndex / intMax)
ProgressBar1.Increment(Increment)
currentIndex += 1
Next
Next
Next