Visual Studio 数组或列表框数据到 Excel 范围
Visual Studio Array or ListBox Data to Excel Range
我正在尝试找出如何以编程方式将我的用户窗体中的现有数组或列表框数据集写入 Excel 中定义的单元格范围。我可以将单个值写入单个单元格,如下面的代码所示,但我有多个 3000 多行长的数组,我无法对每个数组进行硬编码。
Private Sub ExcelSave_click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ExcelSave.Click
Dim xlsWorkbook As Microsoft.Office.Interop.Excel.Workbook
Dim xlsWorksheet As Microsoft.Office.Interop.Excel.Worksheet
Dim xls As New Microsoft.Office.Interop.Excel.Application
Dim resourcesFolder = "C:\DiffractionMonitorFiles\"
Dim fileName = "DataSave MASTER.xlsx"
Dim NewFileName = SampleNameTextBox.Text & ".xlsx"
Dim todaysdate As String = String.Format("{0:MM/dd/yyyy}", DateTime.Now)
'open excel workbook "DataSave MASTER.xlsx"
xlsWorkbook = xls.Workbooks.Open(resourcesFolder & fileName)
'open excel worksheet "Sheet1"
xlsWorksheet = xlsWorkbook.Sheets("Data")
'enter data into specific cells
xlsWorksheet.Cells(4, 2) = UserNameTextBox.Text
xlsWorksheet.Cells(5, 2) = todaysdate
xlsWorksheet.Cells(6, 2) = SampleNameTextBox.Text
xlsWorksheet.Cells(7, 2) = EntranceUpDown.Value
使用此代码可以将数据写入 excel 范围,但它会在每个单元格中写入一个值,而不是将相应的 array/listbox 值写入适当的范围单元格。
Dim i As Integer
For i = dblAreas1(0) To dblAreas1.Length
xlsWorksheet.Range("j17:j3085").Value = dblAreas1(i - 1)
Next i
如果有人能够帮助解决这个问题,我将不胜感激!我是 VB 的新手,通过搜索和类似的论坛学到了我所知道的知识,所以我确信我的代码充满了怪癖,但我很享受这个过程!谢谢!
为此,您需要单独编写每个值。这可以通过一个简单的循环来完成:
For i As Integer = 0 To dblAreas1.Length - 1
xlsWorksheet.Range("J" & (17 + i)).Value = dblAreas1(i)
Next
您的语法非常正确,只是缺少迭代流程。
请注意,我假设您想将 dblAreas1
数组的所有值写入第 J
列,从第 17
行开始.在这种情况下,我更新了您的迭代范围以适应这种情况。
我正在尝试找出如何以编程方式将我的用户窗体中的现有数组或列表框数据集写入 Excel 中定义的单元格范围。我可以将单个值写入单个单元格,如下面的代码所示,但我有多个 3000 多行长的数组,我无法对每个数组进行硬编码。
Private Sub ExcelSave_click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ExcelSave.Click
Dim xlsWorkbook As Microsoft.Office.Interop.Excel.Workbook
Dim xlsWorksheet As Microsoft.Office.Interop.Excel.Worksheet
Dim xls As New Microsoft.Office.Interop.Excel.Application
Dim resourcesFolder = "C:\DiffractionMonitorFiles\"
Dim fileName = "DataSave MASTER.xlsx"
Dim NewFileName = SampleNameTextBox.Text & ".xlsx"
Dim todaysdate As String = String.Format("{0:MM/dd/yyyy}", DateTime.Now)
'open excel workbook "DataSave MASTER.xlsx"
xlsWorkbook = xls.Workbooks.Open(resourcesFolder & fileName)
'open excel worksheet "Sheet1"
xlsWorksheet = xlsWorkbook.Sheets("Data")
'enter data into specific cells
xlsWorksheet.Cells(4, 2) = UserNameTextBox.Text
xlsWorksheet.Cells(5, 2) = todaysdate
xlsWorksheet.Cells(6, 2) = SampleNameTextBox.Text
xlsWorksheet.Cells(7, 2) = EntranceUpDown.Value
使用此代码可以将数据写入 excel 范围,但它会在每个单元格中写入一个值,而不是将相应的 array/listbox 值写入适当的范围单元格。
Dim i As Integer
For i = dblAreas1(0) To dblAreas1.Length
xlsWorksheet.Range("j17:j3085").Value = dblAreas1(i - 1)
Next i
如果有人能够帮助解决这个问题,我将不胜感激!我是 VB 的新手,通过搜索和类似的论坛学到了我所知道的知识,所以我确信我的代码充满了怪癖,但我很享受这个过程!谢谢!
为此,您需要单独编写每个值。这可以通过一个简单的循环来完成:
For i As Integer = 0 To dblAreas1.Length - 1
xlsWorksheet.Range("J" & (17 + i)).Value = dblAreas1(i)
Next
您的语法非常正确,只是缺少迭代流程。
请注意,我假设您想将 dblAreas1
数组的所有值写入第 J
列,从第 17
行开始.在这种情况下,我更新了您的迭代范围以适应这种情况。