以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]饼形图如何生成图片文件  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=141318)

--  作者:洮沙
--  发布时间:2019/9/26 15:33:00
--  [求助]饼形图如何生成图片文件

 Dim Chart As WinForm.Chart \'定义一个图表变量
    Dim Series As WinForm.ChartSeries \'定义一个图系变量
    Dim t As Table = Tables("批次统计临时表") \'定义一个变量t引用数据表
    Dim sm As Integer = t.Compute("Sum(各环节成本)") \'计算总数量
    Chart = e.Form.Controls("Chart1") \' 引用窗口中的图表
    Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮
    Chart.ChartType = ChartTypeEnum.Pie \'图表1类型改为Bar(条形)
    Chart.SeriesList.Clear()
    For Each r As Row In t.Rows
        Series = Chart.SeriesList.Add() \'增加一个图系
        Series.Length = 1 \'一个系列只能包括一个值
        Series.Text = r("各环节名称") & "(" & Format(r("各环节成本"),"#,###.00") & ")" \'设置图系的标题
        Series.Y(0) = r("各环节成本") \'指定值
        If r("各环节名称") = "其他环节" Then \'如果是其他环节
            Series.Offset = 20 \'那么图系偏离中心点20个像素.
        End If
        Series.DataLabelText = Math.Round(r("各环节成本")*100/sm,2) & "%" \'计算百分比
    Next

 

由以上“饼形图”生成代码,如何生成图片文件,在EXCEL 打印模板中引用?

 

参考以下帮助,把自己搞糊涂了!

http://www.foxtable.com/webhelp/topics/1924.htm

 

麻烦老师指点一二,谢谢!

[此贴子已经被作者于2019/9/26 16:48:44编辑过]

--  作者:有点蓝
--  发布时间:2019/9/26 15:59:00
--  
Dim Chart As New ChartBuilder 
Dim Series As WinForm.ChartSeries \'定义一个图系变量
    Dim t As Table = Tables("批次统计临时表") \'定义一个变量t引用数据表
    Dim sm As Integer = t.Compute("Sum(各环节成本)") \'计算总数量
Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮
    Chart.ChartType = ChartTypeEnum.Pie \'图表1类型改为Bar(条形)
    Chart.SeriesList.Clear()
    For Each r As Row In t.Rows
        Series = Chart.SeriesList.Add() \'增加一个图系
        Series.Length = 1 \'一个系列只能包括一个值
        Series.Text = r("各环节名称") & "(" & Format(r("各环节成本"),"#,###.00") & ")" \'设置图系的标题
        Series.Y(0) = r("各环节成本") \'指定值
        If r("各环节名称") = "其他环节" Then \'如果是其他环节
            Series.Offset = 20 \'那么图系偏离中心点20个像素.
        End If
        Series.DataLabelText = Math.Round(r("各环节成本")*100/sm,2) & "%" \'计算百分比
    Next
Chart.SaveImage(ProjectPath & "Images\\myimg.wmf"
\'生成Excel报表:

Dim 
Book As New XLS.Book(ProjectPath & "Attachments\\销售统计.xls")
Book
.Build() 
Book.Save(ProjectPath & 
"Reports\\销售统计.xls"
)

--  作者:洮沙
--  发布时间:2019/9/26 16:21:00
--  
以下是引用有点蓝在2019/9/26 15:59:00的发言:
Dim Chart As New ChartBuilder 
Dim Series As WinForm.ChartSeries \'定义一个图系变量
    Dim t As Table = Tables("批次统计临时表") \'定义一个变量t引用数据表
    Dim sm As Integer = t.Compute("Sum(各环节成本)") \'计算总数量
Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮
    Chart.ChartType = ChartTypeEnum.Pie \'图表1类型改为Bar(条形)
    Chart.SeriesList.Clear()
    For Each r As Row In t.Rows
        Series = Chart.SeriesList.Add() \'增加一个图系
        Series.Length = 1 \'一个系列只能包括一个值
        Series.Text = r("各环节名称") & "(" & Format(r("各环节成本"),"#,###.00") & ")" \'设置图系的标题
        Series.Y(0) = r("各环节成本") \'指定值
        If r("各环节名称") = "其他环节" Then \'如果是其他环节
            Series.Offset = 20 \'那么图系偏离中心点20个像素.
        End If
        Series.DataLabelText = Math.Round(r("各环节成本")*100/sm,2) & "%" \'计算百分比
    Next
Chart.SaveImage(ProjectPath & "Images\\myimg.wmf"
\'生成Excel报表:

Dim 
Book As New XLS.Book(ProjectPath & "Attachments\\销售统计.xls")
Book
.Build() 
Book.Save(ProjectPath & 
"Reports\\销售统计.xls"
)

感谢蓝版,图片能够生成,但是又不知道怎么引用了?另外生成的图片特别小,怎么办呢?还得麻烦你再指点一下!

 

 

 还有如何将以下标题也引用到excel报表?


此主题相关图片如下:3.png
按此在新窗口浏览图片

 

 

蓝版,我左右琢磨了半天,实在用EXCEL模板无法将图表顺利引用。先将就直接打印窗口。待你有时间的话,再给予解答,谢谢您的帮助!

[此贴子已经被作者于2019/9/26 16:51:22编辑过]

--  作者:有点蓝
--  发布时间:2019/9/26 16:51:00
--  
参考:http://www.foxtable.com/webhelp/topics/1242.htm

保存为图片默认就包含图例的

--  作者:洮沙
--  发布时间:2019/9/26 17:05:00
--  
以下是引用有点蓝在2019/9/26 16:51:00的发言:
参考:http://www.foxtable.com/webhelp/topics/1242.htm

保存为图片默认就包含图例的


图片点击可在新窗口打开查看此主题相关图片如下:4.png
图片点击可在新窗口打开查看

这是参照帮助,生成的PDF 文件,效果十分不理想,同时没有将标题一同生成。

 

 

代码如下:

Dim Chart As New ChartBuilder
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim t1 As Table = Tables("批次统计临时表") \'定义一个变量t引用数据表
Dim sm As Integer = t1.Compute("Sum(各环节成本)") \'计算总数量
Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie \'图表1类型改为Bar(条形)
Chart.SeriesList.Clear()
For Each r As Row In t1.Rows
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Length = 1 \'一个系列只能包括一个值
    Series.Text = r("各环节名称") & "(" & Format(r("各环节成本"),"#,###.00") & ")" \'设置图系的标题
    Series.Y(0) = r("各环节成本") \'指定值
    If r("各环节名称") = "其他环节" Then \'如果是其他环节
        Series.Offset = 20 \'那么图系偏离中心点20个像素.
    End If
    Series.DataLabelText = Math.Round(r("各环节成本")*100/sm,2) & "%" \'计算百分比
Next
Chart.PrintWidth = 200
Chart.PrintHeight = 100
Chart.SaveImage(ProjectPath & "Reports\\【单】批次各环节成本构成分析.wmf")
Dim Book As New XLS.Book(ProjectPath & "Attachments\\【单】批次各环节成本构成分析.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Sheet(15,7).Value = New XLS.Picture(Chart.Image) \'修改模板
Sheet(9,4).Value = "" & RJ & "" \'修改模板
Sheet(9,5).Value = "操作员:" & User.Name \'修改模板
Dim t As String = Date.Now
Dim wjm As String =  t.SubString(0,4) &  t.SubString(5,2) & t.SubString(8,2) & t.SubString(11,2)  & t.SubString(14,2)  & t.SubString(17,2)
Dim fl As String = ProjectPath & "Reports\\" & wjm & ".pdf"
Book.Build() \'生成细节区
Book.SaveToPDF(fl) \'保存为PDF文件
Dim Proc As New Process \'打开PDF文件
Proc.File = fl
Proc.Start()

[此贴子已经被作者于2019/9/26 17:05:33编辑过]

--  作者:有点蓝
--  发布时间:2019/9/26 17:37:00
--  
保存为bmp图片试试

Chart.SaveImage(ProjectPath & "Reports\\【单】批次各环节成本构成分析.bmp")

至于图例,您都没有显示:http://www.foxtable.com/webhelp/topics/0991.htm