2017-10-06 227 views
1

我正在写一个宏来在OpenOffice Basic中生成饼图,我想显示图表上不同部分的百分比。例如,我要一个结果,如下面的链接:图表 - OOo basic:如何在PieChart中显示百分比

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

这里是我的重复性代码:

我的数据是:

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

和宏:

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非常感谢您的帮助!我发现OOo基础文档非常难以理解,而且很差。

回答

1

https://forum.openoffice.org/en/forum/viewtopic.php?t=44377开始,我终于想出了这个代码,它可以满足您的需求。上的数字格式

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) 

文档,如存在,可以在https://wiki.openoffice.org/wiki/Documentation/DevGuide/OfficeDev/Managing_Number_Formats找到。 Basic中的许多常见任务都有很好的文档记录,但是你所做的有点不同寻常,因此文档比较模糊。

随时保持寻求帮助 - 你的问题写得很好。通过实践,使用UNO API变得更容易。

+0

谢谢!这就是我需要的! – Xavier