OpenOffice Pyuno «Sélectionnez tout»
-
12-11-2019 - |
Question
Est-ce que quelqu'un sait comment utiliser l'API OO Uno Bridge pour "sélectionner tous" dans une feuille de calcul?
Alternativement, la recherche de la ligne et le numéro de colonne utilisées maximales fonctionnerait.
Ce que je veux faire, c'est appliquer un format à toutes les cellules de la feuille de calcul.
(La raison en est que j'enregistre la feuille en tant que CSV, donc les chiffres ne sont pas enregistrés avec précision à moins que le format ne fournisse suffisamment de décimales.)
La solution
En supposant que vous vous êtes déjà connecté à OpenOffice et document
est une feuille de calcul qui a été ouverte ou créée.
#get the sheet you want to work with, I'm just going to grab the first sheet
sheets = document.getSheets().createEnumeration()
sheet = sheets.nextElement()
#start with a range on the first cell
range = sheet.getCellRangeByPosition( 0, 0, 0, 0 )
#expand to full extend of the used area
range.gotoEndOfUsedArea( True ) #true for expand selection
#no do whatever formatting things you want to do
Autres conseils
J'obtiens une erreur (erreur d'attribut) avec la ligne:
gamme.gotoendofusedarea (true)
En combinant les deux informations à 1: http://nab.pcug.org.au/transferdemo_oocalc.pyet 2: https://wiki.openoffice.org/wiki/Documentation/basic_guide/cells_and_ranges
J'ai trouvé la solution suivante:
def getLastActiveCell(sheet):
"""returns the last used column and row of the provided sheet
(ie the last cell in the range containing something other than '')"""
#create a cursor for the whole sheet using OO interface XSheetCellRange
cursor = sheet.createCursor()
#goto the last used cell
cursor.gotoEndOfUsedArea(True)
#grab that positions "coordinates"
address = cursor.RangeAddress
endcol = address.EndColumn
endrow = address.EndRow
#and pass them back
return endcol,endrow
Vous pouvez ensuite accéder à ces valeurs dans votre code comme ceci:
lastCell = getLastActiveCell(sheetObject)
print lastCell[0] #Column
print lastCell[1] #Row
et créer une gamme
range = sheetObject.getCellRangeByPosition( 0, 0, lastCell[0], lastCell[1] )
ou peu importe pour plus de travail.