以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]生成专业报表中插入图片  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=142410)

--  作者:12397522011
--  发布时间: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
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间: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,没有办法

--  作者:程兴刚
--  发布时间:2019/10/26 9:04:00
--  
问题2:既然开发了系统,就想方设法把其他word内容加进来,让系统更完善,而不是导出后再往其他文件加,只有这样,您开发的系统才会越来越有“身价”!
--  作者:12397522011
--  发布时间: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
--  发布时间:2019/10/26 10:17:00
--  
目前还在学习模仿阶段,水平有限一时半会整不出全套的系统,只能配合使用。
--  作者:有点蓝
--  发布时间: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
--  发布时间:2019/10/26 10:50:00
--  
提示这个,麻烦给看看,实际情况的话照片数量会比较多,看的时候会比较混乱,加上的话比较直观一点

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


--  作者:有点蓝
--  发布时间:2019/10/26 11:08:00
--  
Dim lst As List(of String) = Rows(r).lines("照片或图片")
--  作者:12397522011
--  发布时间:2019/10/26 11:15:00
--  
输出的时候提示
添加的项目已经有所有者了。
--  作者:有点蓝
--  发布时间:2019/10/26 11:25:00
--  
贴出完整代码