Un-merged cells (Calc): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
k (Jeroen Strompf heeft pagina Split merged cells (Calc) hernoemd naar Un-merged cells (Calc))
Regel 55: Regel 55:
 
=== Oplossingen ===
 
=== Oplossingen ===
  
Gebruik collapseToMergedArea:
+
Gebruik <code>collapseToMergedArea</code>. 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://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1sheet_1_1XSheetCellCursor.html#a8664ebd7274d467d7de9c98649244baf

Versie van 6 nov 2019 12:30

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 en getColumnSpan zijn onderdelen van com::sun::star::table.XMergeableCell - En bedoeld voor Writer. isMerged zit in com::sun::star::util::XMergeable en werkt dus wél.

Oplossingen

Gebruik collapseToMergedArea. Lees daarna de dimensies uit van dit gebied.

Bronnen

Algemeen

Probleem getRowSpan & getColumnSpan