Foxtable(狐表)用户栏目专家坐堂 → [求助]动态生成Excel报表(搞定)


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

主题:[求助]动态生成Excel报表(搞定)

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
[求助]动态生成Excel报表(搞定)  发帖心情 Post By:2010/6/30 11:30:00 [显示全部帖子]

有两套EXCEL模板内容相同格式略有不同,根据选择的条件生成不同的报表。


图片点击可在新窗口打开查看此主题相关图片如下:植被统计表.jpg
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:植被统计.jpg
图片点击可在新窗口打开查看
生成植被统计表的正确按钮代码:

If DataTables.Contains("分组统计") '如果存在分组统计
    Dim Names() AS String = {"结果分析表","林种统计表","面积统计表","秋季验收表","补助测算表","坡度统计表","权属统计表","设计汇总表","设计统计表","投资测报表","预算汇总表","植被统计表","验收汇总表","二期补助表"}
    For Each Name As String In Names
        With Tables("分组统计")
            .Select(0 ,0, .Rows.Count - 1, .Cols.Count - 1)
        End with
        Dim Book As New XLS.Book(ProjectPath & "Attachments\" & Name & ".xls") '打开模板
        Book.Build() '生成细节区
        Book.Save("D:\My Documents\退耕报表\"& Name & ".xls") '保存工作簿
        Dim Proc As New Process '打开工作簿
        Proc.File ="D:\My Documents\退耕报表\"& Name & ".xls"
        Proc.Start()
    Next
Else
    MessageBox.Show("先统计!", "提示")
End If

现在想根据条件自动生成报表,提示错误,要怎样写代码才能达到要求?

 

If DataTables.Contains("分组统计") '如果存在分组统计
If e.Form.Controls("ComboBox1")>"" AndAlso e.Form.Controls("ComboBox2")>"" Then
Dim Names() AS String = {"结果分析","林种统计","面积统计","秋季验收","补助测算","坡度统计","权属统计","设计汇总","设计统计","投资测报","预算汇总","植被统计","验收汇总","二期补助"}
Else
    Dim Names() AS String = {"结果分析表","林种统计表","面积统计表","秋季验收表","补助测算表","坡度统计表","权属统计表","设计汇总表","设计统计表","投资测报表","预算汇总表","植被统计表","验收汇总表","二期补助表"}
End If
    For Each Name As String In Names
        With Tables("分组统计")
            .Select(0 ,0, .Rows.Count - 1, .Cols.Count - 1)
        End with
        Dim Book As New XLS.Book(ProjectPath & "Attachments\" & Name & ".xls") '打开模板
        Book.Build() '生成细节区
        Book.Save("D:\My Documents\退耕报表\"& Name & ".xls") '保存工作簿
        Dim Proc As New Process '打开工作簿
        Proc.File ="D:\My Documents\退耕报表\"& Name & ".xls"
        Proc.Start()
    Next
Else
    MessageBox.Show("先统计!", "提示")
End If

[此贴子已经被作者于2010-8-2 19:46:32编辑过]

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/6/30 15:14:00 [显示全部帖子]

If DataTables.Contains("分组统计") '如果存在分组统计
    If e.Form.Controls("ComboBox1").Value>"" AndAlso e.Form.Controls("ComboBox2").Value>"" Then
        Dim Names() AS String = {"结果分析","林种统计","面积统计","秋季验收","补助测算","坡度统计","权属统计","设计汇总","设计统计","投资测报","预算汇总","植被统计","验收汇总","二期补助"}
    Else
        Dim Names() AS String = {"结果分析表","林种统计表","面积统计表","秋季验收表","补助测算表","坡度统计表","权属统计表","设计汇总表","设计统计表","投资测报表","预算汇总表","植被统计表","验收汇总表","二期补助表"}
    End If
    For Each Name As String In Names
        With Tables("分组统计")
            .Select(0 ,0, .Rows.Count - 1, .Cols.Count - 1)
        End with
        Dim Book As New XLS.Book(ProjectPath & "Attachments\" & Name & ".xls") '打开模板
        Book.Build() '生成细节区
        Book.Save("D:\My Documents\退耕报表\"& Name & ".xls") '保存工作簿
        Dim Proc As New Process '打开工作簿
        Proc.File ="D:\My Documents\退耕报表\"& Name & ".xls"
        Proc.Start()
    Next
Else
    MessageBox.Show("先统计!", "提示")
End If

图片点击可在新窗口打开查看此主题相关图片如下:2010-6-30 15-10-54.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/6/30 15:52:00 [显示全部帖子]

If DataTables.Contains("分组统计") '如果存在分组统计
    If Forms("操作选项").Controls("ComboBox1").Value >"" AndAlso Forms("操作选项").Controls("ComboBox2").Value >"" Then
        Dim Names() AS String = {"结果分析","林种统计","面积统计","秋季验收","补助测算","坡度统计","权属统计","设计汇总","设计统计","投资测报","预算汇总","植被统计","验收汇总","二期补助"}
    Else
        Dim Names() AS String = {"结果分析表","林种统计表","面积统计表","秋季验收表","补助测算表","坡度统计表","权属统计表","设计汇总表","设计统计表","投资测报表","预算汇总表","植被统计表","验收汇总表","二期补助表"}
    End If
    For Each Name As String In Names
        With Tables("分组统计")
            .Select(0 ,0, .Rows.Count - 1, .Cols.Count - 1)
        End with
        Dim Book As New XLS.Book(ProjectPath & "Attachments\" & Name & ".xls") '打开模板
        Book.Build() '生成细节区
        Book.Save("D:\My Documents\退耕报表\"& Name & ".xls") '保存工作簿
        Dim Proc As New Process '打开工作簿
        Proc.File ="D:\My Documents\退耕报表\"& Name & ".xls"
        Proc.Start()
    Next
Else
    MessageBox.Show("先统计!", "提示")
End If



图片点击可在新窗口打开查看此主题相关图片如下:2010-6-30 15-49-30.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/6/30 16:15:00 [显示全部帖子]

不好意思!只会拿来套用,要灵活掌握代码不可能了(奔五的人)只熟悉业务。请贺老师点透算了


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/6/30 16:30:00 [显示全部帖子]

可能只一步之遥,自己无解了。有一个笨办法就是增加一个按钮人工判断。

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/6/30 16:57:00 [显示全部帖子]

谢谢

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/7/1 9:18:00 [显示全部帖子]

Windows XP下 出现


图片点击可在新窗口打开查看此主题相关图片如下:2010-7-1 9-11-27.gif
图片点击可在新窗口打开查看
Windows 7下 正常


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/7/1 9:26:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:2010-7-1 9-24-17.jpg
图片点击可在新窗口打开查看
以前正常,更换EXCEL报表按钮代码后,报表生成完成后才出现。
[此贴子已经被作者于2010-7-1 9:35:10编辑过]

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/7/1 9:49:00 [显示全部帖子]

另一按钮正常(增加一条件)

Dim Names() As String
If DataTables.Contains("分组统计") '如果存在分组统计
    If Forms("操作选项").Controls("ComboBox1").Value >"" AndAlso Forms("操作选项").Controls("ComboBox2").Value >"" AndAlso Forms("操作选项").Controls("CheckBox3").Checked=True AndAlso Forms("操作选项").Controls("CheckBox4").Checked=True Then
        Names = New String() {"树种统计","需苗统计"}
    Else
        Names = New String() {"树种统计表","需苗统计表"}
    End If
    For Each Name As String In Names
        With Tables("分组统计")
            .Select(0 ,0, .Rows.Count - 1, .Cols.Count - 1)
        End with
        Dim Book As New XLS.Book(ProjectPath & "Attachments\" & Name & ".xls") '打开模板
        Book.Build() '生成细节区
        Book.Save("D:\My Documents\退耕报表\"& Name & ".xls") '保存工作簿
        Dim Proc As New Process '打开工作簿
        Proc.File ="D:\My Documents\退耕报表\"& Name & ".xls"
        Proc.Start()
    Next
Else
    MessageBox.Show("先统计!", "提示")
End If

 

这个按钮不正常生成报表后出现要退出的提示,不点击这个按钮一切正常。

Dim Names() As String
If DataTables.Contains("分组统计") '如果存在分组统计
    If Forms("操作选项").Controls("ComboBox1").Value >"" AndAlso Forms("操作选项").Controls("ComboBox2").Value >"" AndAlso Forms("操作选项").Controls("CheckBox3").Checked=True Then
        Names = New String() {"结果分析","林种统计","面积统计","秋季验收","补助测算","坡度统计","权属统计","设计汇总","设计统计","投资测报","预算汇总","植被统计","验收汇总","二期补助"}
    Else
        Names = New String() {"结果分析表","林种统计表","面积统计表","秋季验收表","补助测算表","坡度统计表","权属统计表","设计汇总表","设计统计表","投资测报表","预算汇总表","植被统计表","验收汇总表","二期补助表"}
    End If
    For Each Name As String In Names
        With Tables("分组统计")
            .Select(0 ,0, .Rows.Count - 1, .Cols.Count - 1)
        End with
        Dim Book As New XLS.Book(ProjectPath & "Attachments\" & Name & ".xls") '打开模板
        Book.Build() '生成细节区
        Book.Save("D:\My Documents\退耕报表\"& Name & ".xls") '保存工作簿
        Dim Proc As New Process '打开工作簿
        Proc.File ="D:\My Documents\退耕报表\"& Name & ".xls"
        Proc.Start()
    Next
Else
    MessageBox.Show("先统计!", "提示")
End If

[此贴子已经被作者于2010-7-1 16:44:05编辑过]

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/7/1 11:03:00 [显示全部帖子]

升级到.net framework 2.0 sp2,甚至升级到.net framework 3.5 sp1也不行

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