Конвертировать Interop в ClosedXML - PullRequest
0 голосов
/ 02 мая 2019

У меня есть 3 строки кода взаимодействия C #, которые я пытаюсь преобразовать в ClosedXML. Может кто-нибудь помочь, пожалуйста?

str2 = worksheet.Range("B3", "L13").get_End(XlDirection.xlDown).get_Address(false, false, XlReferenceStyle.xlA1, System.Type.Missing, System.Type.Missing).Replace("B", "L");
object[,] objArray = (object[,]) worksheet.Range("B3", str2).Value;
str3 = worksheet.Range("B3", "L13").get_End(XlDirection.xlDown).get_Address(false, false, XlReferenceStyle.xlA1, System.Type.Missing, System.Type.Missing).Replace("B", "L");

Спасибо

1 Ответ

1 голос
/ 09 мая 2019

Как ответил здесь

Этот разрез выглядит слишком сложным. Сначала вы создаете диапазон от B3 до L13, затем переходите к последнему ряду (по-видимому, до B13), затем заменяете B на L, что дает вам L13 и, наконец, вы создайте диапазон B3:L13 еще раз, чтобы получить значения оттуда.

ClosedXML не имеет встроенного метода для преобразования диапазона в двумерный массив, но это легко сделать вручную:

var range = worksheet.Range("B3:L13");
var objArray = new object[range.ColumnCount(), range.RowCount()];
for (int i = 0; i < range.ColumnCount(); i++)
{
    for (int j = 0; j < range.RowCount(); j++)
    {
        objArray[i, j] = range.Cell(j+1, i+1).Value;
    }
}
...