图表 - OOo 基础:如何在饼图中显示百分比
Charts - OOo basic: how to display percentages in a PieChart
我正在编写一个宏来在 OpenOffice Basic 中生成饼图,我想在图表上显示不同部分的百分比。例如,我想要如下所示的结果 link:
这是我的可重现代码:
我的数据是:
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
非常感谢您的帮助!我发现 OOo basic 的文档很难理解而且很差。
从 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 会变得更容易。
我正在编写一个宏来在 OpenOffice Basic 中生成饼图,我想在图表上显示不同部分的百分比。例如,我想要如下所示的结果 link:
这是我的可重现代码:
我的数据是:
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
非常感谢您的帮助!我发现 OOo basic 的文档很难理解而且很差。
从 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 会变得更容易。