Использование
object[,] values = _worksheet.UsedRange.Value2;
Я могу очень быстро читать содержимое таблицы Excel.К сожалению, информация о слитых ячейках исчезает при таком подходе.
Есть ли способ получить информацию о слитом состоянии ячеек?Как это можно сделать с помощью
_worksheet.UsedRange.Rows.Cells[row, column].MergeCells
Поскольку в настоящее время я выполняю итерацию по количеству строк, объединенных с использованием
_worksheet.UsedRange.Rows.Cells[row, column].MergeArea.Rows.Count()
Я бы хотелиметь что-то похожее с массивом объектов.
Есть ли способ преобразовать "Range" в какой-нибудь массив объектов, чтобы была доступна дополнительная информация?
EDIT:Поскольку я не нашел другого решения, я тем временем кодировал его так:
/// <summary>
/// Check whether a row is part of a merged area
/// </summary>
/// <param name="row">Row of merged area</param>
/// <param name="column">Column of merged area</param>
/// <returns>True if row is part of a merged area</returns>
public bool IsRowMerged(in int row, in int column)
{
bool result = false;
if (((row + 1) <= GetRows().Count) && (null == GetValues()[(row + 1), column]))
{
result = true;
}
return result;
}
/// <summary>
/// Get count of rows of merged area
/// </summary>
/// <param name="row">Row of merged area</param>
/// <param name="column">Column of merged area</param>
/// <returns>Count of rows of merged area</returns>
public int GetMergedRowsCount(in int row, in int column)
{
int m = 1;
for (; ( ((row + m) <= GetRows().Count) && (null == (GetValues()[(row + m), column]) )); m++);
return m;
}
Где GetValues () даст вам массив объектов, а GetRows () даст вам используемые строки.Предполагается, что строка с содержимым «null» является частью «объединенной» ячейки.Мне не нужно проверять объединенные столбцы прямо сейчас.Работает довольно хорошо для меня.