Foxtable(狐表)用户栏目专家坐堂 → 求助:生成Word报表问题


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

主题:求助:生成Word报表问题

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


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
求助:生成Word报表问题  发帖心情 Post By:2016/7/7 10:24:00 [只看该作者]

老师,下面的代码是跟据当天的日期生成Word报表的,请问,如果按照选中的行生成Word报表的话,代码该怎么写呢?
Dim drs As List(of DataRow) = DataTables("日报表").Select("日期 = #" & Date.Today & "#") '筛选出符合条件的行
If drs.Count > 0 Then '如果存在符合条件的行
    Dim tm As String  = ProjectPath & "Attachments\test.doc" '指定模板文件
    Dim fl As String = ProjectPath & "Reports\练习.doc" '指定目标文件
    Dim wrt As New WordReport(Tables("日报表"),tm,fl) '定义一个WordReport
    Dim sum1 As Double = DataTables("日报表").Compute("Sum(资金可用余额)","日期 = #" & Date.Today & "#")
    Dim sum2 As Double = DataTables("日报表").Compute("Sum(当天收入截至当天17时_现金回款额)","日期 = #" & Date.Today & "#")
    Dim sum3 As Double = DataTables("日报表").Compute("Sum(支出合计)","日期 = #" & Date.Today & "#")
    
    Dim str As String = "当日资金可用余额总计: " & sum1 & "万元,截至当日17时回款总计:" & Sum2 & "万元,当日支出总计" & sum3 & "万元"
    wrt.Replace("[第一部分]", str)
    str = ""
    Dim i As Integer = 1
    For Each dr As DataRow In drs '逐行生成报表
        str &= i & "、" & dr("项目名称") & ":(1)当日资金可用余额:" & Format(dr("资金可用余额") ,"0.00") & "万元;"
        str &= vbcrlf
        i += 1
    Next
    wrt.Replace("[第二部分]", str)
    wrt.Build
    wrt.Show() '显示报表
End If

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


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

Dim t As Table = Tables("日报表")
If t.rows.count > 0 Then
    Dim tm As String  = ProjectPath & "Attachments\test.doc" '指定模板文件
    Dim fl As String = ProjectPath & "Reports\练习.doc" '指定目标文件
    Dim wrt As New WordReport(Tables("日报表"),tm,fl) '定义一个WordReport
    Dim sum1 As Double = DataTables("日报表").Compute("Sum(资金可用余额)","日期 = #" & Date.Today & "#")
    Dim sum2 As Double = DataTables("日报表").Compute("Sum(当天收入截至当天17时_现金回款额)","日期 = #" & Date.Today & "#")
    Dim sum3 As Double = DataTables("日报表").Compute("Sum(支出合计)","日期 = #" & Date.Today & "#")
   
    Dim str As String = "当日资金可用余额总计: " & sum1 & "万元,截至当日17时回款总计:" & Sum2 & "万元,当日支出总计" & sum3 & "万元"
    wrt.Replace("[第一部分]", str)
    str = ""
    Dim i As Integer = 1
    For j As Integer = t.TopPosition To t.BottomPosition
        Dim dr As Row = t.rows(j)
        str &= i & "?" & dr("项目名称") & ":(1)当日资金可用余额:" & Format(dr("资金可用余额") ,"0.00") & "万元;"
        str &= vbcrlf
        i += 1
    Next
    wrt.Replace("[第二部分]", str)
    wrt.Build
    wrt.Show() '显示报表
end if

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


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/7/7 11:35:00 [只看该作者]

首先感谢老师的及时回复!不过上面代码有点小问题,1、生成报表后不能自动打开,2、选中几行,生成的报表就会重复生成几次一样的文字。还请老师再帮忙看看!


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


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

代码没问题,上传实例说明问题。

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


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/7/7 12:30:00 [只看该作者]

选中几行,生成的报表就会重复生成几次一样的文字。还请老师再帮忙看看!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:练习项目.table


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


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

改一改

 

'''
Dim t As Table = Tables("日报表")
If t.rows.count > 0 Then
    Dim tm As String  = ProjectPath & "Attachments\test.doc" '指定模板文件
    Dim fl As String = ProjectPath & "Reports\练习.doc" '指定目标文件
    Dim wrt As New WordReport(Tables("日报表"),tm,fl) '定义一个WordReport
    Dim sum1 As Double = DataTables("日报表").Compute("Sum(资金可用余额)","日期 = #" & Date.Today & "#")
    Dim sum2 As Double = DataTables("日报表").Compute("Sum(当天收入截至当天17时_现金回款额)","日期 = #" & Date.Today & "#")
    Dim sum3 As Double = DataTables("日报表").Compute("Sum(支出合计)","日期 = #" & Date.Today & "#")
   
    Dim str As String = "当日资金可用余额总计: " & sum1 & "万元,截至当日17时回款总计:" & Sum2 & "万元,当日支出总计" & sum3 & "万元"
    wrt.Replace("[第一部分]", str)
    str = ""
    Dim i As Integer = 1
    For j As Integer = t.TopPosition To t.BottomPosition
        Dim dr As Row = t.rows(j)
        str &= i & "、" & dr("项目名称") & ":(1)当日资金可用余额:" & Format(dr("资金可用余额") ,"0.00") & "万元;"
        str &= vbcrlf
        i += 1
    Next
    wrt.Replace("[第二部分]", str)
    wrt.BuildOne(t.Current.DataRow)
    wrt.Show() '显示报表
End If


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


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/7/7 15:20:00 [只看该作者]

谢谢老师!图片点击可在新窗口打开查看

 回到顶部