チャートの挿入
チャートの挿入にはシートオブジェクトからのチャートコンテナの addNewByName メソッドを使用します。 void addNewByName( string aName, .awt.Rectangle aRect, sequence< CellRangeAddress > aRanges, boolean bColumnHeaders, boolean bRowHeaders )
Sub chart_1 Dim oDoc As Object, oSheet As Object Dim oCharts As Object, oChart As Object, oEmbChart As Object Dim aRange(0) As New com.sun.star.table.CellRangeAddress Dim aRectangle As New com.sun.star.awt.Rectangle Dim sCharName As String oDoc = ThisComponent oSheet = oDoc.Sheets(0) oCharts = oSheet.getCharts() sChartName = "Chart1" With aRange(0) .Sheet = 0 .StartColumn = 0 .StartRow = 0 .EndColumn = 1 .EndRow = 3 End With With aRectangle .X = 50 .Y = 50 .Width = 5000 .Height = 5000 End With If NOT oCharts.hasByName(sChartName) Then oCharts.addNewByName(sChartName,aRectangle,aRange(),true,true) oChart = oCharts.getByName(sChartName) oEmbChart = oChart.getEmbeddedObject() End If End Sub 普段のチャートの挿入時には使用する名前のチャートが存在するかどうかなどを確認する必要があります。hasByName メソッドで有無を調べ, removeByName メソッドで削除します。 void removeByName( string aName ) boolean hasByName( string aName )
そのほかのメソッドについては Charts? のページを参照してください。 チャートオブジェクトにチャートドキュメントオブジェクトが埋め込み型オブジェクトとして保持されているような構造になっています。チャートドキュメントオブジェクトを取得するには,チャートオブジェクトから getEmbeddedObject メソッドを使用します。 チャートの種類の変更
チャートは作成された直後には縦型の棒グラフです。始めから特定の種類のグラフを作成することはできません。そこで,作成したチャートの種類を変更します。 チャートの種類を変更するには変更したい型のチャートのインスタンスを作成して,そのインスタンスを使用してチャートの種類を変更します。チャートの種類のプロパティーは Diagram です。 次の例では上の chart_1 で作成したチャートを円グラフに変更してみます。 Sub chart_2 Dim oDoc As Object, oSheet As Object Dim oCharts As Object, oChart As Object, oEmbChart As Object Dim oDiagram As Object Dim aRange(0) As New com.sun.star.table.CellRangeAddress Dim aRectangle As New com.sun.star.awt.Rectangle Dim sCharName As String oDoc = ThisComponent oSheet = oDoc.Sheets(0) oCharts = oSheet.getCharts() sChartName = "Chart1" With aRange(0) .Sheet = 0 .StartColumn = 0 .StartRow = 0 .EndColumn = 1 .EndRow = 2 End With With aRectangle .X = 1500 .Y = 1500 .Width = 7000 .Height = 5000 End With If NOT oCharts.hasByName(sChartName) Then oCharts.addNewByName(sChartName,aRectangle,aRange(),true,true) oChart = oCharts.getByName(sChartName) oEmbChart = oChart.getEmbeddedObject() oEmbChart.setDiagram( _ oEmbChart.createInstance("com.sun.star.chart.PieDiagram") ) oEmbChart.DataSourceLabelsInFirstRow = false oDoc.calculate() End If End Sub 新しいチャートの種類のインスタンスはチャートドキュメントオブジェクトから createInstance メソッドを使って作成します。 oEmbChart.createInstance("com.sun.star.chart.PieDiagram") |