Foxtable(狐表)用户栏目专家坐堂 → [求助]统计表导出并生成图表


  共有7758人关注过本帖树形打印复制链接

主题:[求助]统计表导出并生成图表

帅哥哟,离线,有人找我吗?
大红袍
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/5 16:05:00 [显示全部帖子]

 哪个窗口哪个按钮怎么测试啊。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/5 16:38:00 [显示全部帖子]

 Dim bbs() As String = {"高文","高理"}
Dim tjnj As String = e.Form.Controls("年级").text '统计年级
Dim tjlb As String = e.Form.Controls("类别").text '统计类别
For Each bb As String In bbs
    '生成Excel报表
    Dim b As New XLS.Book
    Dim t As Table = Tables("总分" & tjnj & "级" & tjlb & bb & "部分优生对照表")
    Dim s As XLS.Sheet = b.Sheets(0)
    For c As Integer = 0 To t.Cols.Count -1 '添加列标题
        s(0, c).Value = t.Cols(c).Name
    Next
    For r As Integer = 0 To t.Rows.Count - 1 '填入数据
        For c As Integer = 0 To t.Cols.Count -1
            s(r +1, c).Value = t.rows(r)(c)
        Next
    Next
    '生成图表
   
    Dim Chart As WinForm.Chart = e.Form.Controls("Chart1")
    Dim Series As WinForm.ChartSeries '定义一个图系变量
    Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
    Chart.SeriesList.Clear() '清除图表原来的图系
    Chart.AxisX.ClearValueLabel
Chart.BarClusterWidth = 80
    Dim xms As List(of String) = t.DataTable.GetValues("姓名")
    For Each lb As String In t.DataTable.GetValues("类别")
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Text = lb '设置图系的标题
        Dim drs As List(Of DataRow) = t.DataTable.Select("")
        Series.Length = xms.Count
        For r As Integer = 0 To xms.count-1
            Series.X(r) = r
            Series.Y(r) = val(t.compute("sum(总分)", "姓名 = '" & xms(r) & "' and 类别 = '" & lb & "'"))
            Chart.AxisX.SetValueLabel(r, xms(r)) '指定字符表示
        Next
        series.DataLabelCompass = LabelCompassEnum.North
        Series.DataLabelText = "{#YVAL}"
    Next
    Chart.AxisX.AnnoWithLabels = True '启用字符标示
   
    Chart.AxisX.AnnoRotation = - 45 'X轴标示逆时针旋转45度
    chart.SeriesList(0).MarkSize= 1 '设置数据点标记的大小
    Chart.LegendVisible = True '显示图列
    Chart.LegendCompass= CompassEnum.South '图列显示在南方(底端)
    Chart.AxisX.Text = "姓名"
    Chart.AxisY.Text = "总分"
    Chart.PrintWidth = 300
    Chart.PrintHeight = 150
    s(t.rows.Count + 2,1).Value = New XLS.Picture(Chart.Image)
    b.Save("d:\期末考试文件\" & t.name & ".xls")
    Dim Proc As New Process
    Proc.File = "d:\期末考试文件\" & t.name & ".xls"
   
    Proc.Start()
Next

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/6 12:01:00 [显示全部帖子]


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/6 15:21:00 [显示全部帖子]

 compute 统计max,min

 

http://www.foxtable.com/help/topics/0548.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/6 17:48:00 [显示全部帖子]

t.SaveExcel(dlg.FileName, bb & "部分优生对照表") '保存文件

Dim b As New XLS.Book(dlg.FileName)
Dim s As XLS.Sheet = b.Sheets(bb & "部分优生对照表")
s(t.rows.Count + 2,1).Value = New XLS.Picture(Chart.Image)
b.Save(dlg.FileName)


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/9 10:49:00 [显示全部帖子]


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/9 11:30:00 [显示全部帖子]

 

chart.LegendText = "ABCDEFG"


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/10 17:02:00 [显示全部帖子]

以下是引用cqlpjks在2016/5/10 16:59:00的发言:
能否可以在统计的同时生成图表。即在生成临时统计表的下面生成一个图表。请指教。谢谢!

 

执行完生成统计表的代码后,再执行生成图表的代码不就行了?

 

如果要在一起显示,你可以做一个窗口,放一个table,放一个chart,把窗口打开不就行了?

 

http://www.foxtable.com/help/topics/2309.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/10 17:12:00 [显示全部帖子]

以下是引用cqlpjks在2016/5/10 17:11:00的发言:
我是想在一起显示,并在导出时在一个表中。

 

本来就是导出在一个excel文件里面,上下显示了啊。


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/11 16:36:00 [显示全部帖子]

Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    '生成图表
    Dim Chart As new ChartBuilder '定义一个图表变量
    Dim Series As WinForm.ChartSeries '定义一个图系变量
    Dim t As Table = Tables("总分重点人数对照表") '定义一个变量t引用数据表
   
    Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
    Chart.SeriesList.Clear() '清除图表原来的图系
    Dim xms As List(of String) = t.DataTable.GetValues("单位","单位 <> '市级分数线'")
    For Each xm As String In xms
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Text = xm '设置图系的标题
        series.length = t.Cols.count-2
        Chart.AxisY.Major = 10 '主刻度间隔值为10
        For r As Integer = 0 To t.Cols.count-3
            Series.X(r) = r
            Series.Y(r) = val(t.Compute("sum(" & t.Cols(r+2).name & ")", "单位 = '" & xm & "'"))
            Chart.AxisX.SetValueLabel(r, t.Cols(r+2).caption) '指定字符表示
        Next
    Next
    
    series.DataLabelCompass = LabelCompassEnum.North
    Series.DataLabelText = "{#YVAL}"
    Chart.AxisX.AnnoWithLabels = True '启用字符标示
    Chart.AxisX.AnnoRotation = - 45 'X轴标示逆时针旋转45度
    chart.SeriesList(0).MarkSize= 1 '设置数据点标记的大小
    Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
    Chart.LegendVisible = True '显示图列
    Chart.LegendCompass= CompassEnum.South '图列显示在南方(底端)
    Chart.AxisX.Text = "单位"
    chart.LegendText = "图例:年级"
   
    Chart.AxisY.Text = "重点人数"
    Chart.PrintWidth = 360
    Chart.PrintHeight = 180
    '保存文件
    t.SaveExcel(dlg.FileName, "重点人数对照表") '保存文件
    Dim b As New XLS.Book(dlg.FileName)
    Dim s As XLS.Sheet = b.Sheets("重点人数对照表")
    s(t.rows.Count + 2,1).Value = New XLS.Picture(Chart.Image)
    b.Save(dlg.FileName)
    DataTables.unload( "总分重点人数对照表")
End If
e.Form.Controls("Label1").Text = "总分重点人数对照表已导出并删除!"

 回到顶部
总数 14 1 2 下一页