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


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

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

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/7/1 15:59:00 [只看该作者]

错误找到了,原来是在Windows xp的电脑上报表事件设有代码删除后就正常了,与操作系统和NetFramwork无关

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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/7/1 16:09:00 [只看该作者]

图片点击可在新窗口打开查看

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


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

还有一小问题就是生成的报表村名上面是空格,实际这一栏为合计值,是否可以用代码加上“合计”。如图

 


图片点击可在新窗口打开查看此主题相关图片如下:2010-7-1 16-13-31.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/7/1 16:44:00 [只看该作者]

自己在模板中琢磨吧,这样的问题,谁也帮不了你,除非用个简单的例子说明。


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/7/30 15:39:00 [只看该作者]

一、单个的报表可以实现用代码插入单元格“合计”,以下是分别是四个报表的代码。

With Tables("分组统计")
    .Select(0 ,0, .Rows.Count - 1, .Cols.Count - 1)
End With
If Forms("选项").Controls("ComboBox1").Value >"" Andalso Forms("选项").Controls("CheckBox2").Checked=True Then
    Dim Book As New XLS.Book(ProjectPath & "Attachments\林分属性表.xls") '打开模板
    Book.Build() '生成细节区
    Book.Save("d:\My Documents\Reports\林分属性表.xls") '保存工作簿
    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("D:\My Documents\Reports\林分属性表.xls")
    Dim Wd As MSExcel.Window = Wb.Windows(1)    '表示当前工作簿窗口
    Wd.DisplayZeros = False                 '不显示0值
    App.Visible = True
    Wb.Sheets(1).range("A7").Value = "合计"
    Wb.Save
Else
    Dim Book As New XLS.Book(ProjectPath & "Attachments\林分属性.xls") '打开模板
    Book.Build() '生成细节区
    Book.Save("d:\My Documents\Reports\林分属性.xls") '保存工作簿
    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("D:\My Documents\Reports\林分属性.xls")
    Dim Wd As MSExcel.Window = Wb.Windows(1)    '表示当前工作簿窗口
    Wd.DisplayZeros = False                 '不显示0值
    App.Visible = True
    Wb.Save
End If

 

With Tables("分组统计")
    .Select(0 ,0, .Rows.Count - 1, .Cols.Count - 1)
End With
If Forms("选项").Controls("ComboBox1").Value >"" Andalso Forms("选项").Controls("CheckBox2").Checked=True Then
    Dim Book As New XLS.Book(ProjectPath & "Attachments\插花统计表.xls") '打开模板
    Book.Build() '生成细节区
    Book.Save("d:\My Documents\Reports\插花统计表.xls") '保存工作簿
   Dim App As New MSExcel.Application
    Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("D:\My Documents\Reports\插花统计表.xls")
    Dim Wd As MSExcel.Window = Wb.Windows(1)    '表示当前工作簿窗口
    Wd.DisplayZeros = False                 '不显示0值
    App.Visible = True
    Wb.Sheets(1).range("A5").Value = "合计"
    Wb.Save
Else
    Dim Book As New XLS.Book(ProjectPath & "Attachments\插花统计.xls") '打开模板
    Book.Build() '生成细节区
    Book.Save("d:\My Documents\Reports\插花统计.xls") '保存工作簿
    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("D:\My Documents\Reports\插花统计.xls")
    Dim Wd As MSExcel.Window = Wb.Windows(1)    '表示当前工作簿窗口
    Wd.DisplayZeros = False                 '不显示0值
    App.Visible = True
    Wb.Save
End If

 

 

With Tables("分组统计")
    .Select(0 ,0, .Rows.Count - 1, .Cols.Count - 1)
End With
If Forms("选项").Controls("ComboBox1").Value >"" Andalso Forms("选项").Controls("CheckBox2").Checked=True Then
    Dim Book As New XLS.Book(ProjectPath & "Attachments\林种统计表.xls") '打开模板
    Book.Build() '生成细节区
    Book.Save("d:\My Documents\Reports\林种统计表.xls") '保存工作簿
    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("D:\My Documents\Reports\林种统计表.xls")
    Dim Wd As MSExcel.Window = Wb.Windows(1)    '表示当前工作簿窗口
    Wd.DisplayZeros = False                 '不显示0值
    App.Visible = True
    Wb.Sheets(1).range("A6").Value = "合计"
    Wb.Save
Else
    Dim Book As New XLS.Book(ProjectPath & "Attachments\林种统计.xls") '打开模板
    Book.Build() '生成细节区
    Book.Save("d:\My Documents\Reports\林种统计.xls") '保存工作簿
    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("D:\My Documents\Reports\林种统计.xls")
    Dim Wd As MSExcel.Window = Wb.Windows(1)    '表示当前工作簿窗口
    Wd.DisplayZeros = False                 '不显示0值
    App.Visible = True
    Wb.Save
End If

 

With Tables("分组统计")
    .Select(0 ,0, .Rows.Count - 1, .Cols.Count - 1)
End With
If Forms("选项").Controls("ComboBox1").Value >"" Andalso Forms("选项").Controls("CheckBox2").Checked=True Then
    Dim Book As New XLS.Book(ProjectPath & "Attachments\经营类型表.xls") '打开模板
    Book.Build() '生成细节区
    Book.Save("d:\My Documents\Reports\经营类型表.xls") '保存工作簿
    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("D:\My Documents\Reports\经营类型表.xls")
    Dim Wd As MSExcel.Window = Wb.Windows(1)    '表示当前工作簿窗口
    Wd.DisplayZeros = False                 '不显示0值
    App.Visible = True
    Wb.Sheets(1).range("A7").Value = "合计"
    Wb.Save
Else
    Dim Book As New XLS.Book(ProjectPath & "Attachments\经营类型.xls") '打开模板
    Book.Build() '生成细节区
    Book.Save("d:\My Documents\Reports\经营类型.xls") '保存工作簿
    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("D:\My Documents\Reports\经营类型.xls")
    Dim Wd As MSExcel.Window = Wb.Windows(1)    '表示当前工作簿窗口
    Wd.DisplayZeros = False                 '不显示0值
    App.Visible = True
    Wb.Save
End If

 

二、怎样在四个报表一次性生成的代码增加插入单元格“合计”,"林分属性表","插花统计表","林种统计表","经营类型表",对应插入单元格“合计”于"A7","A5","A6","A7"。

 

Dim Names() As String
If DataTables.Contains("分组统计") '如果存在分组统计
    If Forms("选项").Controls("ComboBox1").Value >"" Andalso Forms("选项").Controls("CheckBox2").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\Reports\"& Name & ".xls") '保存工作簿
        Dim App As New MSExcel.Application
        Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("D:\My Documents\Reports\"& Name & ".xls")
        Dim Wd As MSExcel.Window = Wb.Windows(1)    '表示当前工作簿窗口
        Wd.DisplayZeros = False                 '不显示0值
        App.Visible = True
        Wb.Save
    Next
Else
    MessageBox.Show("先统计!", "提示")
End If


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/7/30 18:09:00 [只看该作者]

这个应该是最适合用<标记>的地方了........

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/7/31 10:30:00 [只看该作者]

     报表事件标记要配合模板进行在相应位置标记<合计>,但是模板这个位置已经是<村名>不能动了,因此这个方法可能行不通。

     用下面的方法应该可行只是自己不会写代码,搞了多次不成功,希望大师出手!

     Dim App As New MSExcel.Application
    Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("D:\My Documents\Reports\经营类型表.xls")
    Dim Wd As MSExcel.Window = Wb.Windows(1)    '表示当前工作簿窗口
    Wd.DisplayZeros = False                 '不显示0值
    App.Visible = True
    Wb.Sheets(1).range("A7").Value = "合计"
    Wb.Save


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


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2010/7/31 13:36:00 [只看该作者]

那个位置如果是空值:笨办法:

 

if Wb.Sheets(1).range("A5").Value = ""
    Wb.Sheets(1).range("A5").Value = "合计"

End if


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/8/1 17:44:00 [只看该作者]

Dim Names() As String
If DataTables.Contains("分组统计") '如果存在分组统计
    If Forms("选项").Controls("ComboBox1").Value >"" Andalso Forms("选项").Controls("CheckBox2").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\Reports\"& Name & ".xls") '保存工作簿
        Dim App As New MSExcel.Application
        Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("D:\My Documents\Reports\"& Name & ".xls")
        Dim Wd As MSExcel.Window = Wb.Windows(1)    '表示当前工作簿窗口
        Wd.DisplayZeros = False                 '不显示0值
        App.Visible = True

if Wb.Sheets(1).range("A5").Value = ""    '4个报表分别是A7,A5,A6,A7
    Wb.Sheets(1).range("A5").Value = "合计"

End if


        Wb.Save
    Next
Else
    MessageBox.Show("先统计!", "提示")
End If

 

如果蓝色字符能够智能变为A7,A5,A6,A7,就能达到目的


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


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2010/8/1 19:06:00 [只看该作者]

一共才4个,连续几个if...........then 就可以了。

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