Un-merged cells (Calc)
Het kan altijd nog gekker: Ik wil een rekenblad importeren, maar om tikwerk te besparen, hebben mensen cellen gemerged. Als ik kopiëer-en-plak zonder opmaak, gaat de inhoud van die merged cell naar de eerste cel. De overige cellen zijn leeg - en niet meer gemerged. Daarnaast kunnen merged cellen gevolgd worden door lege cellen. Graag wil ik dit splitten of unmergen automatiseren, ivm. fouten en veel werk.
Bereik merged cells achterhalen
Detecteren van merged cells is niet zo moeilijk. Maar hoe achterhaal ik nu hoe groot dat merged area is?
Probleem
Dit werkt niet:
o_cursor = ThisComponent.Sheets(0).createCursor() o_cursor.gotoEndOfUsedArea(false) i_rows = o_cursor.getRangeAddress().EndRow+1 i_columns = o_cursor.getRangeAddress().EndColumn+1 ''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Iterate through all columns ''''''''''''''''''''''''''''''''''''''''''''''''''''' for column_counter=0 to i_columns ''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Iterate through all rows ''''''''''''''''''''''''''''''''''''''''''''''''''''' ' for row_counter=0 to i_rows ''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Check if cell is merged ''''''''''''''''''''''''''''''''''''''''''''''''''''' ' if ThisComponent.sheets(0).getCellByPosition(column_counter, row_counter).isMerged then ' Cell is merged! Now get the range ''''''''''''''''''''''''''''''''''' ' ' FOUTMELDING ' ' row_range = ThisComponent.sheets(0).getCellByPosition(column_counter, row_counter).getRowSpan # FOUTMELDING ' column_range = ThisComponent.sheets(0).getCellByPosition(column_counter, row_counter).getColumnSpan # FOUTMELDING end if next next
Mogelijke oorzaken
getRowSpan
engetColumnSpan
zijn onderdelen vancom::sun::star::table.XMergeableCell
- En bedoeld voor Writer.isMerged
zit incom::sun::star::util::XMergeable
en werkt dus wél.
Oplossingen
Gebruik collapseToMergedArea
. Lees daarna de dimensies uit van dit gebied.
- https://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1sheet_1_1XSheetCellCursor.html#a8664ebd7274d467d7de9c98649244baf
- https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=80528
- https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=96635
- https://forum.openoffice.org/en/forum/viewtopic.php?f=45&t=24234
Bronnen
Algemeen
- https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=29848 - Komt een heel eind, maar handmatig, en houdt niet rekening met de situatie dat een merged cell gevolgd wordt door een lege cel
- https://forum.openoffice.org/en/forum/viewtopic.php?f=5&t=74092 - Warm!
- https://www.openoffice.org/api/docs/common/ref/com/sun/star/table/XMergeableCellRange.html
- https://www.openoffice.org/api/docs/common/ref/com/sun/star/table/Cell.html
- https://forum.openoffice.org/en/forum/viewtopic.php?f=45&t=24234&hilit=merged+area
- https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=80528 - Heel interessant!
Probleem getRowSpan & getColumnSpan