Я читаю документ Excel через библиотеку DocumentFormat.OpenXml
. Есть хороший способ узнать, сколько у него столбцов?
Текущий код, с которым я только что столкнулся при исследовании ошибки, делает это:
public string getMaxColumnName(SheetData aSheetData)
{
string lLastCellReference = aSheetData.Descendants<Cell>().Last().CellReference.InnerText;
char[] lRowNumberIndex = lLastCellReference.IndexOfAny(new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' });
return lLastCellReference.Substring(0, lRowNumberIndex);
}
На английском языке: найдите последнюю ячейку на листе, получите ссылку на ее ячейку (например, «CB99») и получите все до первой цифры. Проблема в том, что последняя ячейка на листе не обязательно находится в крайнем правом столбце.
У меня есть тестовый лист, который представляет собой аккуратный прямоугольный стол. Он содержит 1000 строк, заполняющих столбцы от A до M, поэтому предполагается, что функция возвращает строку «M». Но поскольку в ячейке C1522 есть посторонний символ пробела, он считается последней ячейкой, поэтому функция сообщает максимальный столбец как «C».
Мой первоначальный импульс состоял в том, чтобы просто заменить этот вызов Last()
чем-то вроде Max(columnNumber)
. Однако Cell
, по-видимому, не отображает фактический номер столбца, только эту составную строку CellReference
. Я не думаю, что хочу разделять строки внутри предиката.
Есть ли способ найти самый правый столбец листа, не анализируя CellReference
каждой отдельной ячейки?