Excel VB.Net - преобразование массива в диапазон и установка значения в таблицу - PullRequest
0 голосов
/ 02 июля 2018

Я пытался найти решение для этой ошибки в течение нескольких часов, все решения, которые я нашел, не исправили ошибку, которую я получаю при установке Range.Value2 = Value при попытке заполнить массив в таблицу Excel. В настоящее время размер массива составляет всего 1, я пробовал его с большим массивом, и пока он просто выдает мне это исключение в последней строке кода:

System.Runtime.InteropServices.COMException: 'Exception from HRESULT: 0x800A03EC'

код:

Imports ExcelDna.Integration
Imports Excel = Microsoft.Office.Interop.Excel

Public Function TestFunction()

    'Dim data = New Object(1, 2) {{1, 2, 3}, {2, 3, 4}}
    Dim app As Excel.Application = CType(ExcelDnaUtil.Application, Excel.Application)
    Dim worksheet As Excel.Worksheet = CType(app.ActiveWorkbook.ActiveSheet, Excel.Worksheet)
    Dim rng As Excel.Range = CType(worksheet.Cells(2, 1), Excel.Range)

    Dim arr() As String = New String() {"hello world"}

    'Tried this rng.Value2 = arr as well
    rng.Resize(1, arr.Length).Value2 = arr
End Function

Моя цель - иметь возможность скопировать матрицу в таблицу Excel, но пока я просто нужна помощь в исправлении ошибки, которую код выдает с массивом. Спасибо за будущие ответы!

1 Ответ

0 голосов
/ 02 июля 2018

Range.Value2 - это двумерный массив / матрица, вы также должны использовать такой массив.

Dim arrLine1() As String = {"Hello World!", "red", "green"}

' convert to 2-dimensional array
Dim arr(,) As String
Redim arr(1, arrLine1.Length)
For i = 0 To arrline1.Length - 1
    arr(0, i) = arrLine1(i)
Next

rng.Resize(1, arr.GetUpperBound(1)).Value2 = arr
...