Ошибка # N / A в Excel (# N / V на немецком языке) появляется, когда диапазон больше, чем массив. Таким образом, если myRange
равно [5,5] и myArray
равно [4,4],
myRange.Value = myArray
вернет это:
Как этого избежать - не назначайте маленький массив большему диапазону. Или прокрутите диапазон и проверьте наличие знака # . Тогда сделай что-нибудь с этим. Это код, с которым нужно «играть», видя, как он присваивает значения из массива диапазону:
using System;
using Excel = Microsoft.Office.Interop.Excel;
namespace excelTest
{
class Program
{
static void Main()
{
Excel.Application excel = new Excel.Application
{
Visible = true,
DisplayAlerts = false
};
Excel.Workbook wbk = excel.Workbooks.Add(Type.Missing);
Excel.Worksheet wks = wbk.Worksheets[1];
Excel.Range cellA1 = wks.Cells[1, 1];
Excel.Range cellE5 = wks.Cells[5, 5];
Excel.Range myRange = wks.get_Range(cellA1, cellE5);
int[,] myArray = new int[4, 4];
for (int col = 0; col < myArray.GetLength(0); col++)
{
for (int row = 0; row < myArray.GetLength(1); row++)
{
myArray[col, row] = (col + row) * 2;
}
}
myRange.Value = myArray;
}
Это Excel.Workbook Open
:
public static Excel.Workbook Open(Excel.Application excelInstance,
string fileName, bool readOnly = false, bool editable = true,
bool updateLinks = true)
{
Excel.Workbook book = excelInstance.Workbooks.Open(
fileName, updateLinks, readOnly,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, editable, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
return book;
}