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


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

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

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


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

试过了不行的 


图片点击可在新窗口打开查看此主题相关图片如下:2010-8-1 20-48-33.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2010-8-1 20-49-48.png
图片点击可在新窗口打开查看

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2010/8/1 22:02:00 [只看该作者]

试试

If Wb.Sheets(1).range("A5").Value.ToString() = "" Then


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


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

还是不行

 


图片点击可在新窗口打开查看此主题相关图片如下:2010-8-2 9-47-16.png
图片点击可在新窗口打开查看

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


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

If Wb.Sheets(1).range("A5").Value IsNot Nothing Then


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


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

虽然不报错但“合计”的位置不正确。


此主题相关图片如下:2010-8-2 10-50-51.png
按此在新窗口浏览图片
 

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 IsNot Nothing Then
            Wb.Sheets(1).range("A5").Value = "合计"
        End If
        If Wb.Sheets(1).range("A6").Value IsNot Nothing Then
            Wb.Sheets(1).range("A6").Value = "合计"
        End If
        If Wb.Sheets(1).range("A7").Value IsNot Nothing Then
            Wb.Sheets(1).range("A7").Value = "合计"
        End If
        Wb.Save
    Next
Else
    MessageBox.Show("先统计!", "提示")
End If

可能还要加入指定报表的代码----如果是“林分属性表”和A7空则插入“合计”


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


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

自己研究,我不懂

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


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

如果你的一个excel表中A5、A6。。。。。不止一个空值,那你就得指定那个表的那个单元格了。依据你在论坛的时间,你应该在前10楼的时候就可以搞定了。

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


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

在菜单中单个报表已经搞定了,现在是按钮生成批量(多个)报表,就是不会写指定报表代码,请各位指点!
[此贴子已经被作者于2010-8-2 15:13:01编辑过]

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


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

大哥啊,这样不成吗:

 

If name = "林分属性表"

.......代码。。。。

End If


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


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

感谢e-png! 终于搞定了,到此Excel报表清除“0”值、插入“合计”完美了。

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 name = "林分属性表"  Then
            Wb.Sheets(1).range("A7").Value = "合计"
        End If
        If name = "插花统计表" Then
            Wb.Sheets(1).range("A5").Value = "合计"
        End If
        If name = "林种统计表" Then
            Wb.Sheets(1).range("A6").Value = "合计"
        End If
        If name = "经营类型表" Then
            Wb.Sheets(1).range("A7").Value = "合计"
        End If
        Wb.Save
    Next
Else
    MessageBox.Show("先统计!", "提示")
End If

[此贴子已经被作者于2010-8-2 18:53:54编辑过]

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