Foxtable(狐表)用户栏目专家坐堂 → [求助]生成专业报表中插入图片


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

主题:[求助]生成专业报表中插入图片

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


加好友 发短信
等级:幼狐 帖子:91 积分:715 威望:0 精华:0 注册:2019/10/20 0:27:00
[求助]生成专业报表中插入图片  发帖心情 Post By:2019/10/26 0:25:00 [只看该作者]

问题1:利用代码生成了如下报表(代码在照片后面),怎么实现狐表中照片图片列的图片插入到导出的报表的下面(图中红色箭头标注的位置,如果有多张图片依次添加)

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20191026001624.png
图片点击可在新窗口打开查看
生成报表的代码:
Dim doc As New PrintDoc  '定义一个专业报表
Dim rt As prt.RenderTable '定义一个表格
Dim rx As prt.RenderText  '定义一个文本
Dim tbl As Table = Tables("病害统计表") '定义一个表
Dim Rows As List(Of DataRow)  '定义行集合
'Dim Regions As List(Of String) = tbl.DataTable.GetValues("桥梁名称")  '从指定列中,获取不重复的值,以集合的形式返回.
Dim Regions As List(Of String()) = tbl.DataTable.GetValues("桥梁名称|桥梁代码|部件名称")  '从指定列中,获取不重复的值,以集合的形式返回.
doc.Pagesetting.Landscape = False
For Each Region As String() In Regions
    rx = New prt.RenderText
    rx.Style.FontSize = 14
    rx.Style.FontBold = True '字体加粗
    rx.Style.Spacing.Bottom = 2 '设置下间隔为2毫米
    'rx.Text = "桥梁名称: " & Region
    rx.Text = Region(1) & Region(0) & " " &  Region(2)
    doc.Body.Children.Add(rx) '加入到报表中
    rt = New prt.RenderTable
    rt.Style.Font = Tables("病害统计表").Font
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center
    rt.Style.GridLines.All = New prt.LineDef(0.3,Color.LightGray)
    rt.Style.Spacing.Bottom = 5
    rt.CellStyle.Spacing.All = 1
    rt.Style.Font = tbl.Font
    Rows = tbl.DataTable.Select("[桥梁名称] = '" & Region(0) & "'and [部件名称] = '" & Region(2) & "'")
    For c As Integer = 4 To tbl.Cols.Count - 1
        rt.Cells(0,c).Text = tbl.Cols(c).Name
        rt.Cols(c).Width = tbl.Cols(c).PrintWidth
        For r As Integer = 0 To Rows.Count -1
            rt.Cells(r + 1, c).Text = rows(r)(tbl.Cols(c).Name)
        Next
    Next
    rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All
    doc.Body.Children.Add(rt)
Next
doc.preview()
问题2:生成的报表另存为word文件格式,表格乱了有没有办法解决,因为后期这些数据要添加到别的word文件中去

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20191026000901.png
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109540 积分:557374 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/26 8:54:00 [只看该作者]

问题1,大概这样

Rows = tbl.DataTable.Select("[桥梁名称] = '" & Region(0) & "'and [部件名称] = '" & Region(2) & "'")
For c As Integer = 4 To tbl.Cols.Count - 1
    rt.Cells(0,c).Text = tbl.Cols(c).Name
    rt.Cols(c).Width = tbl.Cols(c).PrintWidth
    For r As Integer = 0 To Rows.Count -1
        rt.Cells(r + 1, c).Text = rows(r)(tbl.Cols(c).Name)
    Next
Next

Dim rm As prt.RenderImage 
For r As Integer = 0 To Rows.Count -1
    rm = new prt.RenderImage '定义一个图片对象
    '默认,按比例拉伸
    rm.Width = 40 '设置尺寸
    rm.Height = 40
    rm.Image = GetImage( ProjectPath & Rows(r)("图片")) '设置图片
    rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center '居中显示
    rm.Style.Spacing = 5
    doc.Body.Children.Add(rm)
Next

问题2,没有办法

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7251 积分:40720 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2019/10/26 9:04:00 [只看该作者]

问题2:既然开发了系统,就想方设法把其他word内容加进来,让系统更完善,而不是导出后再往其他文件加,只有这样,您开发的系统才会越来越有“身价”!

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


加好友 发短信
等级:幼狐 帖子:91 积分:715 威望:0 精华:0 注册:2019/10/20 0:27:00
  发帖心情 Post By:2019/10/26 10:15:00 [只看该作者]

非常感谢大神能抽空解答
问题:1、代码加进去,提示有错误,把rm.Style.Spacing.all = 5 这行改了下,不知道对不对;
         现在是会空出来位置但是照片没有显示出来,是不是代码加入的地方不对,还是其他问题。
         2、输出的表格的照片图片列里面路径太长了,能不能替换成图1、图2这种,然后对应照片下面也显示替换后的图号,避免乱了。
//////加入代码的位置
Rows = tbl.DataTable.Select("[桥梁名称] = '" & Region(0) & "'and [部件名称] = '" & Region(2) & "'")
    For c As Integer = 4 To tbl.Cols.Count - 1
        rt.Cells(0,c).Text = tbl.Cols(c).Name
        rt.Cols(c).Width = tbl.Cols(c).PrintWidth
        For r As Integer = 0 To Rows.Count -1
            rt.Cells(r + 1, c).Text = rows(r)(tbl.Cols(c).Name)
        Next
    Next
    rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All
    doc.Body.Children.Add(rt)
    '添加照片
    Dim rm As prt.RenderImage
    For r As Integer = 0 To Rows.Count -1
        rm = new prt.RenderImage '定义一个图片对象
        '默认,按比例拉伸
        rm.Width = 40 '设置尺寸
        rm.Height = 40
        rm.Image = GetImage( ProjectPath & Rows(r)("照片或图片")) '设置图片
MessageBox.Show( ProjectPath & Rows(r)("照片或图片")) 
        rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center '居中显示
        rm.Style.Spacing.all = 5
        doc.Body.Children.Add(rm)
 Next
////输出的照片的路径

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20191026100945.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20191026100952.png
图片点击可在新窗口打开查看

////输出的报表截图

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20191026100210.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:幼狐 帖子:91 积分:715 威望:0 精华:0 注册:2019/10/20 0:27:00
  发帖心情 Post By:2019/10/26 10:17:00 [只看该作者]

目前还在学习模仿阶段,水平有限一时半会整不出全套的系统,只能配合使用。

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109540 积分:557374 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/26 10:32:00 [只看该作者]

Dim rm As prt.RenderImage
For r As Integer = 0 To Rows.Count -1
    rm = new prt.RenderImage '定义一个图片对象
    '默认,按比例拉伸
    rm.Width = 40 '设置尺寸
    rm.Height = 40
    Dim lst As List(of String) = Rows(r).DataRow.lines("照片或图片")
    For Each s As String In lst
        rm.Image = GetImage( ProjectPath & "Attachments\" & s) '设置图片
        MessageBox.Show( ProjectPath & "Attachments\" & s)
        rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center '居中显示
        rm.Style.Spacing.All = 5
        doc.Body.Children.Add(rm)
    Next
Next

另外图片名称还有必要打印出来吗?

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


加好友 发短信
等级:幼狐 帖子:91 积分:715 威望:0 精华:0 注册:2019/10/20 0:27:00
  发帖心情 Post By:2019/10/26 10:50:00 [只看该作者]

提示这个,麻烦给看看,实际情况的话照片数量会比较多,看的时候会比较混乱,加上的话比较直观一点

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20191026104600.png
图片点击可在新窗口打开查看


 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109540 积分:557374 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/26 11:08:00 [只看该作者]

Dim lst As List(of String) = Rows(r).lines("照片或图片")

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


加好友 发短信
等级:幼狐 帖子:91 积分:715 威望:0 精华:0 注册:2019/10/20 0:27:00
  发帖心情 Post By:2019/10/26 11:15:00 [只看该作者]

输出的时候提示
添加的项目已经有所有者了。

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109540 积分:557374 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/26 11:25:00 [只看该作者]

贴出完整代码

 回到顶部
总数 15 1 2 下一页