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


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

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

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


加好友 发短信
等级:一尾狐 帖子:407 积分:3194 威望:0 精华:0 注册:2011/2/28 11:57:00
[求助]统计表导出并生成图表  发帖心情 Post By:2016/5/5 16:01:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:高三分析统计程序(统计表导出并生成图表测试).rar

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:总分2015级三诊高文部分优生对照表.xls

请教:1.在条形图上同时显示“总分”和“类别”

         2.导出表时只导出了一个表“总分2015级三诊高文部分优生对照表”,还有一个表“总分2015级三诊高理部分优生对照表”没导出来。

        怎么修改代码,请指教。谢谢!


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


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

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


加好友 发短信
等级:一尾狐 帖子:407 积分:3194 威望:0 精华:0 注册:2011/2/28 11:57:00
  发帖心情 Post By:2016/5/5 17:20:00 [只看该作者]

谢谢!


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


加好友 发短信
等级:一尾狐 帖子:407 积分:3194 威望:0 精华:0 注册:2011/2/28 11:57:00
  发帖心情 Post By:2016/5/6 11:51:00 [只看该作者]

请教:纵坐标的起始值能否从表中的最小值开始,间距值为20?那样要清楚些。谢谢!

[此贴子已经被作者于2016/5/6 11:53:57编辑过]

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


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


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


加好友 发短信
等级:一尾狐 帖子:407 积分:3194 威望:0 精华:0 注册:2011/2/28 11:57:00
  发帖心情 Post By:2016/5/6 15:19:00 [只看该作者]

没有具体的值,根据“总分”列的最大值和最小值来自动确定。  怎么修改代码:Chart.AxisY.Min = 400 '指定Y轴的最小值     Chart.AxisY.Max = 700 '指定Y轴的最大值。请指教。谢谢!


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

 


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


加好友 发短信
等级:一尾狐 帖子:407 积分:3194 威望:0 精华:0 注册:2011/2/28 11:57:00
  发帖心情 Post By:2016/5/6 15:31:00 [只看该作者]

谢谢!

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


加好友 发短信
等级:一尾狐 帖子:407 积分:3194 威望:0 精华:0 注册:2011/2/28 11:57:00
  发帖心情 Post By:2016/5/6 17:43:00 [只看该作者]

导出后不能自成图表,不知怎么修改代码?请指教!谢谢!

 

Dim bbs() As String = {"高文","高理"}
Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim tjnj As String = e.Form.Controls("年级").text '统计年级
    Dim tjlb As String = e.Form.Controls("类别").text '统计类别
    For Each bb As String In bbs
       
        If  "总分" <> "成绩库" And "总分" <> "校名设置" And "总分" <> "目标设置"  Then
           
            '生成图表
            Dim t As Table = Tables("总分" & tjnj & "级" & tjlb & bb & "部分优生对照表")
            Dim Chart As New ChartBuilder '定义一个图表变量
            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() '增加一个图系
                Chart.AxisY.Min = t.DataTable.Compute("Min(总分)") '指定Y轴的最小值
                Chart.AxisY.Max = t.DataTable.Compute("Max(总分)") '指定Y轴的最大值
                Chart.AxisY.Major = 10 '主刻度间隔值为20
                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
            Tables( "总分" & tjnj & "级" & tjlb & bb & "部分优生对照表").SaveExcel(dlg.FileName, bb & "部分优生对照表") '保存文件
        End If
    Next
End If


 回到顶部
总数 33 1 2 3 4 下一页