Top > OOoBasic > Calc > charts > InsertChart

チャートの挿入 Edit

チャートの挿入にはシートオブジェクトからのチャートコンテナの addNewByName メソッドを使用します。

void addNewByName( string aName, .awt.Rectangle aRect, 
  sequence< CellRangeAddress > aRanges, boolean bColumnHeaders, 
  boolean bRowHeaders )
  • aName: チャートの名前
  • aRect: チャートの位置とサイズ
  • aRanges: チャートのデータ範囲
  • bColumnHeaders: チャートの列ヘッダの使用
  • 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 )
  • aName: チャートの名前

そのほかのメソッドについては Charts? のページを参照してください。

チャートオブジェクトにチャートドキュメントオブジェクトが埋め込み型オブジェクトとして保持されているような構造になっています。チャートドキュメントオブジェクトを取得するには,チャートオブジェクトから getEmbeddedObject メソッドを使用します。

チャートの種類の変更 Edit

チャートは作成された直後には縦型の棒グラフです。始めから特定の種類のグラフを作成することはできません。そこで,作成したチャートの種類を変更します。

チャートの種類を変更するには変更したい型のチャートのインスタンスを作成して,そのインスタンスを使用してチャートの種類を変更します。チャートの種類のプロパティーは 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")

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes