【发布时间】:2020-09-02 21:41:43
【问题描述】:
所以我在 VB.NET 中编写了一个图形用户界面,它允许用户从 Arduino Uno 的串行监视器读取数据。问题是我只能在测量结束时使用以下代码导出数据:
Private Sub Button_Save_To_Excel_Click(sender As Object, e As EventArgs) Handles Button_Save_To_Excel.Click
Button_Save_To_Excel.Height = 37
Button_Save_To_Excel.Text = "Please Wait..."
Button_Save_To_Excel.Enabled = False
Button_Start_Recording.Enabled = False
ProgressBar_Save_To_Excel.Visible = True
ProgressBar_Save_To_Excel.Value = 1
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
ProgressBar_Save_To_Excel.Value = 3
xlApp = New Microsoft.Office.Interop.Excel.Application
xlWorkBook = xlApp.Workbooks.Add(misValue)
xlWorkSheet = xlWorkBook.Sheets(1)
ProgressBar_Save_To_Excel.Value = 5
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
ProgressBar_Save_To_Excel.Value = 8
Dim savePath As String = Nothing
Using sd As New SaveFileDialog
With sd
.RestoreDirectory = True
.Filter = "Excel XLS Files(*.xls)|*.xls|Excel Macro Embedded Files(*.xlsm)|*.xlsm|Excel XLSX Files(*.xlsx)|*.xlsx"
.FilterIndex = 3
If .ShowDialog = DialogResult.OK Then
savePath = .FileName
End If
End With
End Using
If savePath IsNot Nothing AndAlso savePath.Trim <> "" Then
xlWorkBook.SaveAs(savePath, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue)
End If
xlWorkBook.Close(True, misValue, misValue)
xlApp.Quit()
ProgressBar_Save_To_Excel.Value = 10
MsgBox("Successfully saved" & vbCrLf & "Files are saved at : " & savePath, MsgBoxStyle.Information, "Information")
ProgressBar_Save_To_Excel.Visible = False
Process.Start(savePath)
Button_Save_To_Excel.Height = 50
Button_Save_To_Excel.Text = "Save To MS Excel"
Button_Save_To_Excel.Enabled = True
Button_Start_Recording.Enabled = True
End Sub
有什么方法可以修改代码,以便我可以用来自串行监视器的新数据不断覆盖现有的 Excel 文件?我尝试为此使用循环但没有任何成功。
图形用户界面将用作数据采集系统,可以记录数小时甚至数天的数据。出于这个原因,我不能只在测量结束后导出数据。如果发生停电,所有测量数据都将丢失。
【问题讨论】:
-
好吧,您可以将数据记录到文件中,然后按需拍摄快照数据,然后将其导出到 Excel。因此,您既可以保留数据,又可以在 Excel 用户界面中轻松查看数据。
标签: excel vb.net user-interface