2017-10-06 8 views
1

J'écris une macro pour générer un camembert dans OpenOffice Basic et je veux afficher le pourcentage des différentes parties sur le graphe. Par exemple, je veux un résultat comme dans le lien suivant:Graphiques - OOo basic: comment afficher les pourcentages dans un PieChart

https://docs.microsoft.com/en-us/sql/reporting-services/report-design/display-percentage-values-on-a-pie-chart-report-builder-and-ssrs

Voici mon code reproductible:

mes données sont:

https://i.stack.imgur.com/hwdDz.png

et la macro:

Sub Macro1 

Dim oRange as Object 
Dim oRangeAddress(1) As New com.sun.star.table.CellRangeAddress 
Dim oRect As New com.sun.star.awt.Rectangle 
Dim cTitle as String 

oRange = thisComponent.getCurrentSelection.getRangeAddress 
oSheets = ThisComponent.getSheets() 
oSheet = oSheets.getByIndex(0) 
oCharts = oSheet.Charts 

oRect.Width = 10000 
oRect.Height = 10000 
oRect.X = 8000 
oRect.Y = 1000 

oRangeAddress(0).Sheet = oRange.Sheet 
oRangeAddress(0).StartColumn = 0 
oRangeAddress(0).StartRow = 0 
oRangeAddress(0).EndColumn = 1 
oRangeAddress(0).EndRow = 2 

cTitle = "Test Results" 
oCharts.addNewByName(cTitle,oRect,oRangeAddress(),TRUE, TRUE) 
oChart = oCharts.getByName(cTitle).embeddedObject 
oChart.Diagram = oChart.createInstance("com.sun.star.chart.PieDiagram") 
oChart.HasMainTitle = True 
oChart.Title.String = cTitle 

End Sub 

Th merci beaucoup pour votre aide! Je trouve la documentation pour OOo basic très difficile à comprendre et plutôt pauvre.

Répondre

1

À partir de https://forum.openoffice.org/en/forum/viewtopic.php?t=44377, j'ai finalement trouvé ce code qui fait ce dont vous avez besoin.

rowProps = oChart.Diagram.getDataRowProperties(0) 
rowProps.DataCaption = com.sun.star.chart.ChartDataCaption.PERCENT 
Dim oLocale As New com.sun.star.lang.Locale 
rowProps.PercentageNumberFormat = ThisComponent.getNumberFormats().queryKey(_ 
    "0%", oLocale, True) 

Documentation sur les formats numériques, tels que il est, se trouve à https://wiki.openoffice.org/wiki/Documentation/DevGuide/OfficeDev/Managing_Number_Formats. Beaucoup de tâches courantes dans Basic sont assez bien documentées, mais ce que vous faites est quelque peu inhabituel, d'où la documentation plutôt obscure.

N'hésitez pas à demander de l'aide - vos questions ont été bien écrites. Avec la pratique, travailler avec l'API UNO devient plus facile.

+0

Merci! C'est ce dont j'ai besoin! – Xavier