以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]生成批量统计图  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=136163)

--  作者:sunion
--  发布时间:2019/6/9 11:35:00
--  [求助]生成批量统计图
以下代码根据表A生成统计表,问题是所有的产品的折线图都是显示在同一个统计图中
能不能实现——每一个产品都生成一个独立的折线统计图,比如5个产品,就生成5个统计图,然后把5个图全部插入报表word中
以下代码在哪里修改呢?
请老师们指教,感谢!

\'制作报表
Dim doc As New PrintDoc \'定义一个报表
Doc.PageSetting.LeftMargin = 15 \'设置左边距
Doc.PageSetting.RightMargin = 15 \'设置右边距
Doc.PageSetting.TopMargin = 15 \'设置上边距
Doc.PageSetting.BottomMargin = 15 \'设置下边距


Dim Chart  As WinForm.Chart  \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim t As Table =  Tables("表A") \'定义一个变量t引用数据表
Chart = e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.VisualEffect = False
Chart.SeriesList.Clear() \'清除图表原来的图系
For r As Integer = 0 To t.Rows.count - 1
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Text = t.rows(r)("产品")  \'设置图系的标题
    Series.Length = t.Cols.Count - 1  \'设置图系的长度
    For c As Integer = 1 To t.Cols.count -1
        Series.X(c - 1) = c - 1
        Series.Y(c - 1) = t.Rows(r)(c)
        Chart.AxisX.SetValueLabel(c - 1, t.Cols(c).caption) \'指定字符表示
    Next
Next
Chart.AxisX.AnnoWithLabels = True \'启用字符标示
Chart.LegendVisible = True \'显示图列
Chart.LegendCompass= CompassEnum.South  \'图列显示在南方(底端)

\'-----------引用插入统计图
Dim rm As New prt.RenderImage
rm.Image = Chart.Image()
rm.Width = "Parent.Width"
rm.Height = "Auto" \'高度由图片大小自动决定
rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center \'居中显示
rm.Style.ImageAlign.StretchHorz = True \'禁止拉伸
\'rm.Style.ImageAlign.StretchVert = False
rm.Style.Spacing.Top = 5
doc.Body.Children.Add(rm) \'将图片对象加入报表

Doc.Preview() \'预览报表
[此贴子已经被作者于2019/6/9 11:39:23编辑过]

--  作者:有点甜
--  发布时间:2019/6/9 11:51:00
--  

\'制作报表
Dim doc As New PrintDoc \'定义一个报表
Doc.PageSetting.LeftMargin = 15 \'设置左边距
Doc.PageSetting.RightMargin = 15 \'设置右边距
Doc.PageSetting.TopMargin = 15 \'设置上边距
Doc.PageSetting.BottomMargin = 15 \'设置下边距

Dim t As DataTable =  DataTables("表A") \'定义一个变量t引用数据表
For Each cp As String In t.GetValues("第一列")
    Dim drs = t.Select("第一列=\'" & cp & "\'")
    Dim Chart  As WinForm.Chart  \'定义一个图表变量
    Dim Series As WinForm.ChartSeries \'定义一个图系变量
   
    Chart = new ChartBuilder
    Chart.VisualEffect = False
    Chart.SeriesList.Clear() \'清除图表原来的图系
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Length = drs.count
    Series.Text = cp
    For r As Integer = 0 To drs.count - 1
        Series.X(r) = r
        Series.Y(r) = drs(r)("第三列")
        Chart.AxisX.SetValueLabel(r, drs(r)("第一列")) \'指定字符表示
    Next
    Chart.AxisX.AnnoWithLabels = True \'启用字符标示
    Chart.LegendVisible = True \'显示图列
    Chart.LegendCompass= CompassEnum.South  \'图列显示在南方(底端)
   
   
    \'-----------引用插入统计图
    Dim rm As New prt.RenderImage
    rm.Image = Chart.Image()
    rm.Width = "Parent.Width"
    rm.Height = "Auto" \'高度由图片大小自动决定
    rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center \'居中显示
    rm.Style.ImageAlign.StretchHorz = True \'禁止拉伸
    \'rm.Style.ImageAlign.StretchVert = False
    rm.Style.Spacing.Top = 5
    doc.Body.Children.Add(rm) \'将图片对象加入报表
Next

Doc.Preview() \'预览报表


--  作者:sunion
--  发布时间:2019/6/9 12:13:00
--  

老师你好

红色部分绑定时每个图只有一个点,能不能设置成绑定第2列、第3列、第4列、第6列、第7列?

这样每个图生成的就是一条折线(根据第2列、第3列、第4列、第6列、第7列取值

谢谢!


\'制作报表
Dim doc As New PrintDoc \'定义一个报表
Doc.PageSetting.LeftMargin = 15 \'设置左边距
Doc.PageSetting.RightMargin = 15 \'设置右边距
Doc.PageSetting.TopMargin = 15 \'设置上边距
Doc.PageSetting.BottomMargin = 15 \'设置下边距

Dim t As DataTable =  DataTables("表A") \'定义一个变量t引用数据表
For Each cp As String In t.GetValues("第一列")
    Dim drs = t.Select("第一列=\'" & cp & "\'")
    Dim Chart  As WinForm.Chart  \'定义一个图表变量
    Dim Series As WinForm.ChartSeries \'定义一个图系变量
    
    Chart = new ChartBuilder
    Chart.VisualEffect = False
    Chart.SeriesList.Clear() \'清除图表原来的图系
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Length = drs.count
    Series.Text = cp
    For r As Integer = 0 To drs.count - 1
        Series.X(r) = r
        Series.Y(r) = drs(r)("第三列")      ‘能不能设置成绑定第2列、第3列、第4列、第6列、第7列?
        Chart.AxisX.SetValueLabel(r, drs(r)("第一列")) \'指定字符表示
    Next
    Chart.AxisX.AnnoWithLabels = True \'启用字符标示
    Chart.LegendVisible = True \'显示图列
    Chart.LegendCompass= CompassEnum.South  \'图列显示在南方(底端)
    
    
    \'-----------引用插入统计图
    Dim rm As New prt.RenderImage
    rm.Image = Chart.Image()
    rm.Width = "Parent.Width"
    rm.Height = "Auto" \'高度由图片大小自动决定
    rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center \'居中显示
    rm.Style.ImageAlign.StretchHorz = True \'禁止拉伸
    \'rm.Style.ImageAlign.StretchVert = False
    rm.Style.Spacing.Top = 5
    doc.Body.Children.Add(rm) \'将图片对象加入报表
Next

Doc.Preview() \'预览报表

[此贴子已经被作者于2019/6/9 12:22:02编辑过]

--  作者:有点甜
--  发布时间:2019/6/9 17:26:00
--  

Dim doc As New PrintDoc \'定义一个报表
Doc.PageSetting.LeftMargin = 15 \'设置左边距
Doc.PageSetting.RightMargin = 15 \'设置右边距
Doc.PageSetting.TopMargin = 15 \'设置上边距
Doc.PageSetting.BottomMargin = 15 \'设置下边距


Dim t As Table =  Tables("表A") \'定义一个变量t引用数据表
For r As Integer = 0 To t.Rows.count - 1
    Dim Chart  As WinForm.Chart  \'定义一个图表变量
    Dim Series As WinForm.ChartSeries \'定义一个图系变量
    Chart = new ChartBuilder
    Chart.VisualEffect = False
    Chart.SeriesList.Clear() \'清除图表原来的图系
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Text = t.rows(r)("产品")  \'设置图系的标题
    Series.Length = t.Cols.Count - 1  \'设置图系的长度
    For c As Integer = 1 To t.Cols.count -1
        Series.X(c - 1) = c - 1
        Series.Y(c - 1) = t.Rows(r)(c)
        Chart.AxisX.SetValueLabel(c - 1, t.Cols(c).caption) \'指定字符表示
    Next
    Chart.AxisX.AnnoWithLabels = True \'启用字符标示
    Chart.LegendVisible = True \'显示图列
    Chart.LegendCompass= CompassEnum.South  \'图列显示在南方(底端)
   
   
    \'-----------引用插入统计图
    Dim rm As New prt.RenderImage
    rm.Image = Chart.Image()
    rm.Width = "Parent.Width"
    rm.Height = "Auto" \'高度由图片大小自动决定
    rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center \'居中显示
    rm.Style.ImageAlign.StretchHorz = True \'禁止拉伸
    \'rm.Style.ImageAlign.StretchVert = False
    rm.Style.Spacing.Top = 5
    doc.Body.Children.Add(rm) \'将图片对象加入报表
   
   
Next

Doc.Preview() \'预览报表


--  作者:kaituozhe
--  发布时间:2019/6/9 18:40:00
--  
怎么能设置上述分析图的字体及大小
--  作者:有点甜
--  发布时间:2019/6/10 9:27:00
--  
以下是引用kaituozhe在2019/6/9 18:40:00的发言:
怎么能设置上述分析图的字体及大小

 

请截图具体说明哪里的字体,哪里的大小。