2016-06-03 4 views
0

런타임에 차트를 그려 활성 보고서을 사용하여 jpg 파일로 저장해야합니다. 활성 보고서를 사용하여 런타임에 차트를 그리는 방법은 무엇입니까?

내가 이미 SectionReport를 만들고에 ChartControl을 추가 관리 :

Dim chartControl As New ChartControl() 

Dim series As New GrapeCity.ActiveReports.Chart.Series 
series.Type = Chart.ChartType.Bar3D 

Dim objs As New List(Of Teste)() 
objs.Add(New Teste With {.Nome = "TESTE1", .Valor = 15}) 
objs.Add(New Teste With {.Nome = "TESTE2", .Valor = 22}) 
objs.Add(New Teste With {.Nome = "TESTE3", .Valor = 10}) 
objs.Add(New Teste With {.Nome = "TESTE4", .Valor = 36}) 

Dim chartArea As New ChartArea() 
chartControl.ChartAreas.Add(chartArea) 

chartControl.DataSource = ConvertToDataTable(objs) 
chartControl.Series.Add(series) 
chartControl.Series(0).ValueMembersY = "Nome" 
chartControl.Series(0).ValueMemberX = "Valor" 

Dim rpt As New SectionReport() 
rpt.DataSource = ConvertToDataTable(objs) 

rpt.Sections.InsertPageHF() 
rpt.Sections(0).BackColor = Color.LightGray 

rpt.Sections.Insert(1, New Detail()) 
rpt.Sections(1).BackColor = Color.PeachPuff 
rpt.Sections(1).Height = 1.5 

rpt.Sections(0).Controls.Add(chartControl) 

rpt.Run() 

Export(rpt.Document, "C:\Testes\") 

Export 방법 작품과 JPG를 생성, 문제는 차트 이미지에 표시되지 않는다는 것입니다; 그 자리에 "차트를 그려 내지 못했습니다."라는 메시지가 있습니다. Active Reports 디자이너에서 작성한 차트를 사용하여 Export 메서드를 테스트했으며 완벽하게 작동했습니다. 생성 된 JPG 파일의

는 :

enter image description here

답변

0

다음 코드와 끝까지. 나는 정말로 이유를 모른다. 그러나 그것은 효과가 있었다.

Dim objs As New List(Of Teste)() 
objs.Add(New Teste With {.Nome = "TESTE1", .Valor = 15}) 
objs.Add(New Teste With {.Nome = "TESTE2", .Valor = 22}) 
objs.Add(New Teste With {.Nome = "TESTE3", .Valor = 10}) 
objs.Add(New Teste With {.Nome = "TESTE4", .Valor = 36}) 
objs.Add(New Teste With {.Nome = "TESTE5", .Valor = 36}) 
objs.Add(New Teste With {.Nome = "TESTE6", .Valor = 36}) 
objs.Add(New Teste With {.Nome = "TESTE7", .Valor = 36}) 
objs.Add(New Teste With {.Nome = "TESTE8", .Valor = 36}) 
objs.Add(New Teste With {.Nome = "TESTE9", .Valor = 36}) 

Dim chartArea As New ChartArea(True) 
Dim series As New Series() 

For Each obj As Teste In objs 
    Dim pt As New DataPoint() 
    pt.XValue = obj.Nome 
    pt.YValues = New DoubleArray(New Double() {obj.Valor}) 
    series.Points.Add(pt) 
Next 
series.ChartArea = chartArea 
series.Type = ChartType.Bar2D 
series.ColorPalette = ColorPalette.Iceberg 

Dim chartControl As New ChartControl() 
chartControl.DataSource = ConvertToDataTable(objs) 
chartControl.Series.Add(series) 
chartControl.ChartAreas.Add(chartArea) 

Dim rpt As New SectionReport() 

rpt.Sections.InsertPageHF() 
rpt.Sections.Insert(1, New Detail()) 
rpt.PageSettings.Orientation = PageOrientation.Landscape 
chartControl.Width = CSng(rpt.PageSettings.PaperWidth/1.35) 
chartControl.Height = CSng(rpt.PageSettings.PaperHeight/5) 

rpt.Sections(1).Controls.Add(chartControl) 

rpt.Run() 

Export(rpt.Document, "C:\Testes\") 
관련 문제