У меня есть таблица, созданная каркасом, и у меня есть размеры и координаты ячеек. Однако теперь мне нужно экспортировать это в другой формат, и этот конкретный формат не имеет размера для каждой ячейки, он имеет только размеры для строк и столбцов.
Например, у меня есть таблица 3 на 6 с множеством объединенных ячеек:
- [0] {CellSize (0,0): ш: 8,5 ч: 7,111111}
- [1] {CellSize (0,1): ш: 48,5 ч: 3,888889}
- [2] {CellSize (1,0): ш: 26,83333 ч: 3,222222}
- [3] {CellSize (1,1): ш: 4,166667 ч: 3,222222}
- [4] {CellSize (1,2): ш: 4,416667 ч: 3,222222}
- [5] {CellSize (1,3): ш: 8,5 ч: 3,222222}
- [6] {CellSize (1,4): ш: 4,583333 ч: 3,222222}
- [7] {CellSize (2,0): ш: 8,5 ч: 3,222222}
- [8] {CellSize (2,1): ш: 26,83333 ч: 3,222222}
- [9] {CellSize (2,2): ш: 4,166667 ч: 3,222222}
- [10] {CellSize (2,3): ш: 4,416667 ч: 3,222222}
- [11] {CellSize (2,4): ш: 8,5 ч: 3,222222}
- [12] {CellSize (2,5): ш: 4,583333 ч: 3,222222}
В итоге я хотел бы получить два массива:
rowHeights = [3.888889, 3.222222, 3.222222]
colWidths = [8.5, 26.83333, 4.166667, 4.416667, 8.5, 4.583333]
Моя первоначальная попытка не работает ...
//rows
float[] rowSize = new float[table.RowsNumber];
for (int i = 0; i < table.RowsNumber; i++)
rowSize[i] = float.MaxValue;
foreach (var cellSize in cellSizes)
if (cellSize.height < rowSize[cellSize.row])
rowSize[cellSize.row] = cellSize.height;
//cols
float[] colSize = new float[table.ColumnsNumber];
for (int i = 0; i < table.ColumnsNumber; i++)
colSize[i] = float.MaxValue;
foreach (var cellSize in cellSizes)
if (cellSize.width < colSize[cellSize.column])
colSize[cellSize.column] = cellSize.width;
У кого-нибудь есть идея получше?
редактирование:
Мне удалось найти диапазон строк и диапазон ячеек исходной таблицы, и с этим сделать это:
float[] rowSize = new float[table.RowsNumber];
foreach (var cellSize in cellSizes)
if (cellSize.rowspan == 1)
rowSize[cellSize.row] = cellSize.height;
float[] colSize = new float[table.ColumnsNumber];
foreach (var cellSize in cellSizes)
if (cellSize.colspan == 1)
colSize[cellSize.column] = cellSize.width;
Это даст правильные числа для приведенной выше таблицы и остальных тестовых случаев, но я вполне уверен, что это не работает во всех случаях.