Foxtable(狐表)用户栏目专家坐堂 → 专业报表生成的二维码怎么放入指定的表格单元格里面呢?


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

主题:专业报表生成的二维码怎么放入指定的表格单元格里面呢?

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
专业报表生成的二维码怎么放入指定的表格单元格里面呢?  发帖心情 Post By:2021/6/8 17:46:00 [显示全部帖子]

专业报表生成的二维码怎么放入指定的表格单元格里面呢?
代码如下:
Dim doc As New PrintDoc '定义一个报表
Dim tbl As Table = Tables("待办事项")
Dim rg As prt.RenderGraphics
Dim Bar As New BarCodeBuilder
Bar.Symbology = Barpro.Symbology.QRCode
Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
For i As Integer = tbl.TopRow To tbl.BottomRow
    Dim rw As Row = tbl.Rows(i)
    Dim ra As New prt.RenderArea '定义一个容器
    Dim rt As New prt.RenderTable() '定义一个表格对象
    doc.Body.Children.Add(rt) '将表格对象加入到报表中
    rt.Style.GridLines.All = New prt.LineDef '将网格线类型设为默认类型
    rt.Width = 150 '表宽为150毫米
    rt.Height = 150 '表高为150毫米
    rt.Rows.Count = 3 '设置行数
    rt.Cols.Count = 3 '设置列数
    Doc.Body.ChildRen.Add(ra) '将容器加入到报表中
    bar.Code = rw("uuid")
    rg = new prt.RenderGraphics
    bar.DrawOnCanvas(rg.Graphics,0,0,0.5)
    Doc.Body.Children.Add(rg)
Next
Doc.Preview() '预览报表
生成效果如下:

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


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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)http://www.foxtable.com/webhelp/to...  发帖心情 Post By:2021/6/9 1:42:00 [显示全部帖子]

老师  现在是生成二维码并保存图片  然后调用图片  然后删除图片

有没有办法实现  生成二维码直接就显示图片在指定的单元格内  不需要先保存图片然后调用然后删除图片……


当前代码如下:
Dim doc As New PrintDoc
Dim rt As New prt.RenderTable
Dim ra As prt.RenderArea
Dim rm As prt.RenderImage
Dim rx As prt.RenderText

Dim tbl As Table = Tables("待办事项")
Dim rg As prt.RenderGraphics
Dim Bar As New BarCodeBuilder
Bar.Symbology = Barpro.Symbology.QRCode
Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
For i As Integer = tbl.TopRow To tbl.BottomRow
    Dim rw As Row = tbl.Rows(i)
    bar.Code = "我就是我"
    rg = new prt.RenderGraphics
    bar.DrawOnCanvas(rg.Graphics,0,0,0.5)
    Bar.SaveImage("d:\123.bmp")
    'Doc.Body.Children.Add(rg)
Next
rt.Style.GridLines.All = New prt.LineDef
rt.CellStyle.Spacing.All = 1 '单元格内容和网格线距离1毫米
rt.Cols.Count = 3 '总列数为3
ra = rt.Cells(1,0).Area '引用单元格的容器
rm = New prt.RenderImage '创建一个图片
ra.Stacking = prt.StackingRulesEnum.BlockLeftToRight '排列方式改为从左到右
'设置图片对象
rm.Image = GetImage("d:\123.bmp")
rm.Style.Spacing.Right = 2 '距离右边的对象2毫米
'设置文本对象
'设置RenderArea,并将文本和图片加入到RenderArea
ra.Children.Add(rm) '加入图片到RenderArea中
doc.Body.Children.Add(rt)
If FileSys.FileExists("d:\123.bmp") Then '如果指定的文件存在
    FileSys.DeleteFile("d:\123.bmp",2,2) '则彻底删除之
End If
Doc.Preview()


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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)http://www.foxtable.com/webhelp/to...  发帖心情 Post By:2021/6/9 14:48:00 [显示全部帖子]

还是得麻烦老师指导下了  学习研究了下  没有成功实现  谢谢!

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)Dim Bar As New BarCodeBuilderBar.S...  发帖心情 Post By:2021/6/9 17:40:00 [显示全部帖子]

老师 要继续麻烦你一下   怎么解决这个错误呢?让二维码图片到指定的单元格里面显示出来。

红色部分代码启用的时候提示错误:

图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看
红色部分代码如果不启用的时候运行效果如图:

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

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

当前代码如下:
'''
Dim rg As prt.RenderGraphics
Dim i1 As Integer
Dim doc As New PrintDoc '定义一个报表
Dim tbl As Table = Tables("待办事项")
For i As Integer = tbl.TopRow To tbl.BottomRow
    Dim rw As Row = tbl.Rows(i)
    For i1 = 1 To 2
        
        Dim ra As New prt.RenderArea '定义一个容器
        Dim rt As New prt.RenderTable() '定义一个表格对象
        Dim rx As New prt.RenderText '定义一个文本对象
        
        ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never  '禁止容器因为分页而被垂直分割
        '加入标题
        rx.text = rw("单位")
        rx.Style.FontBold = True '字体加粗
        rx.Style.FontSize = 18 '大体大小为16磅
        rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
        rx.Style.Spacing.Top = 3 '和下面的对象(表格)距离3毫米
        ra.Children.Add(rx) '加入到容器中
        Dim rx1 As New prt.RenderText '定义一个文本对象
        rx1.text = "党史学习教育和""牢记殷切嘱托、"
        rx1.Style.FontBold = True '字体加粗
        rx1.Style.FontSize = 18 '大体大小为16磅
        rx1.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
        'rx1.Style.Spacing.Bottom = 1 '和下面的对象(表格)距离3毫米
        ra.Children.Add(rx1) '加入到容器中
        Dim rx11 As New prt.RenderText '定义一个文本对象
        rx11.text = "忠诚干净担当、喜迎建党百年""专题教育 "
        rx11.Style.FontBold = True '字体加粗
        rx11.Style.FontSize = 18 '大体大小为16磅
        rx11.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
        'rx11.Style.Spacing.Bottom = 5 '和下面的对象(表格)距离3毫米
        ra.Children.Add(rx11) '加入到容器中
        
        
        Dim rx2 As New prt.RenderText '定义一个文本对象
        rx2.text = "工作提示单"
        rx2.Style.FontBold = True '字体加粗
        rx2.Style.FontSize = 18 '大体大小为16磅
        rx2.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
        rx2.Style.Spacing.Bottom = 3 '和下面的对象(表格)距离3毫米
        ra.Children.Add(rx2) '加入到容器中
        '指定行数?列数?列宽?行高
        rt.Rows.Count = 6 '设置总行数
        
        rt.Height = 85 '设置表格的高度
        rt.Rows(0).Height = 10 '设置第7行(显示备注的行)的高度,剩余高度被平均分排到其他行
        rt.Rows(1).Height = 50 '设置第7行(显示备注的行)的高度,剩余高度被平均分排到其他行
        rt.Rows(2).Height = 10 '设置第7行(显示备注的行)的高度,剩余高度被平均分排到其他行
        rt.Rows(3).Height = 10 '设置第7行(显示备注的行)的高度,剩余高度被平均分排到其他行
        rt.Rows(4).Height = 5 '设置第7行(显示备注的行)的高度,剩余高度被平均分排到其他行
        
        '设置合并单元格
        rt.Cells(4,0).SpanCols = 5 '第5行第2个单元格向右合并3列(用于显示uuid)
        rt.Cells(0,0).SpanCols = 5 '第5行第2个单元格向右合并3列(用于显示uuid)
        rt.Cells(1,0).SpanCols = 5 '第7行第1个单元格向右合并5列(用于显示备注)
        rt.Cells(2,1).SpanCols = 4 '第7行第1个单元格向右合并5列(用于显示备注)
        rt.Cells(3,2).SpanCols = 3 '第7行第1个单元格向右合并5列(用于显示备注)
        rt.Cells(2,0).SpanRows = 2
        rt.Cells(2,1).SpanRows = 1
        '设置表格样式
        rt.Style.TextAlignVert = prt.AlignVertEnum.Center '内容垂直居中
        rt.Style.GridLines.All = New prt.Linedef '设置网格线
        '下面很简单,指定每一个单元格的内容
        
        rt.Cells(0,0).Text=  rw("待办人") & ":"
        rt.Cells(0,0).Style.TextAlignHorz=prt.AlignHorzEnum.Left
        rt.Cells(0,0).Style.Font = New Font("宋体", 16, FontStyle.Bold)
        rt.Cells(1,0).Text= "    根据" & rw("事项名称") & "工作安排,您应于" & Format(rw("应办时间"),"yyyy年M月d日") & "提交" & rw("事项内容") & "。经查,您至今未完成。请于" & Format(rw("到期时间"),"yyyy年M月d日") & "前将电子档资料和纸质资料交到院B201办公室汇总归档。"
        rt.Cells(1,0).Style.TextIndent = 100
        rt.Cells(1,0).Style.TextAlignVert=prt.AlignVertEnum.top
        rt.Cells(1,0).Style.LineSpacing=150
        rt.Cells(1,0).Style.Font = New Font("宋体", 16, FontStyle.Bold)
        rt.Cells(2,1).Text= rw("单位") & "党史学习教育领导小组"
        rt.Cells(2,1).Style.TextAlignHorz=prt.AlignHorzEnum.Center
        rt.Cells(2,1).Style.Font = New Font("宋体", 16, FontStyle.Bold)
        rt.Cells(3,2).Text= Format(Date.Today,"yyyy年M月d日")
        rt.Cells(3,2).Style.Font = New Font("宋体", 16, FontStyle.Bold)
        rt.Cells(3,2).Style.TextAlignHorz=prt.AlignHorzEnum.Center
        rt.Cells(3,2).Style.Spacing.Bottom = 3 '和下面的对象(表格)距离3毫米
        rt.Cells(4,0).text="扫我在线提交"
        rt.Cells(4,0).Style.TextAlignVert=prt.AlignVertEnum.Bottom
        rt.Cells(4,0).Style.Font = New Font("黑体", 8, FontStyle.Bold)


        ra.Children.Add(rt) '加入到容器中    
        Dim Bar As New BarCodeBuilder
        Bar.Symbology = Barpro.Symbology.QRCode
        bar.Code ="http://127.0.0.1:9090/smrenwu.htm?a="& rw("待办人") & "&b=" & rw("事项名称")
        rg = new prt.RenderGraphics
        bar.DrawOnCanvas(rg.Graphics,0,0,0.5)
        ra = rt.Cells(2,0).Area '引用单元格的容器 '
        ra.Children.Add(rg)    '
        
        If i1= 1
            Dim rt2 As New prt.RenderText '定义一个文本对象
            rt2.Text = ".............................................................................................................................................................." '设置文本对象的内容
            ra.Children.Add(rt2)
        End If

        Doc.Body.ChildRen.Add(ra) '将容器加入到报表中
        
    Next
Next
Doc.Preview() '预览报表



如果将代码更换为
……
rt.Cells(4,0).Style.Font = New Font("黑体", 8, FontStyle.Bold)
        Doc.Body.ChildRen.Add(ra)
        Dim Bar As New BarCodeBuilder
        Bar.Symbology = Barpro.Symbology.QRCode
        bar.Code ="http://127.0.0.1:9090/smrenwu.htm?a="& rw("待办人") & "&b=" & rw("事项名称")
        rg = new prt.RenderGraphics
        bar.DrawOnCanvas(rg.Graphics,0,0,0.5)
        ra = rt.Cells(2,0).Area '引用单元格的容器 '
        ra.Children.Add(rg)    '
        If i1= 1
            Dim rt2 As New prt.RenderText '定义一个文本对象
            rt2.Text = ".............................................................................................................................................................." '设置文本对象的内容
            ra.Children.Add(rt2)
        End If
        
        Doc.Body.ChildRen.Add(rt) '将容器加入到报表中
    Next
Next
Doc.Preview() '预览报表
运行效果如下:【中间的……………………………………线不显示了】

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


[此贴子已经被作者于2021/6/10 1:06:20编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)        dim&nb...  发帖心情 Post By:2021/6/10 9:22:00 [显示全部帖子]

麻烦老师继续指导下,我还是没有弄成功rt2……这个虚线的正确位置

……
rt.Cells(4,0).Style.Font = New Font("黑体", 8, FontStyle.Bold)
        
        Dim Bar As New BarCodeBuilder
        Bar.Symbology = Barpro.Symbology.QRCode
        bar.Code ="http://127.0.0.1:9090/smrenwu.htm?a="& rw("待办人") & "&b=" & rw("事项名称")
        rg = new prt.RenderGraphics
        bar.DrawOnCanvas(rg.Graphics,0,0,0.5)
        Dim ra2 = rt.Cells(2,0).Area '引用单元格的容器 '
        ra2.Children.Add(rg)
        If i1= 1
            Dim rt2 As New prt.RenderText '定义一个文本对象
            rt2.Text = ".............................................................................................................................................................." '设置文本对象的内容
            ra.Children.Add(rt2)
        End If
        Doc.Body.ChildRen.Add(ra)
Doc.Body.ChildRen.Add(ra2)    ‘提示添加的项目已经有所有者了’
        Doc.Body.ChildRen.Add(rt) '将容器加入到报表中
    Next
Next
Doc.Preview() '预览报表

运行效果如下:

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


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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
  发帖心情 Post By:2021/6/10 10:09:00 [显示全部帖子]

好的 谢谢老师   完美解决了


以下为当前代码:记录以后备查

'''
Dim rg As prt.RenderGraphics
Dim i1 As Integer
Dim doc As New PrintDoc '定义一个报表
Dim tbl As Table = Tables("待办事项")
For i As Integer = tbl.TopRow To tbl.BottomRow
    Dim rw As Row = tbl.Rows(i)
    For i1 = 1 To 2
        
        Dim ra As New prt.RenderArea '定义一个容器
        Dim rt As New prt.RenderTable() '定义一个表格对象
        Dim rx As New prt.RenderText '定义一个文本对象
        
        ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never  '禁止容器因为分页而被垂直分割
        '加入标题
        rx.text = rw("单位")
        rx.Style.FontBold = True '字体加粗
        rx.Style.FontSize = 18 '大体大小为16磅
        rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
        rx.Style.Spacing.Top = 3 '和下面的对象(表格)距离3毫米
        ra.Children.Add(rx) '加入到容器中
        Dim rx1 As New prt.RenderText '定义一个文本对象
        rx1.text = "党史学习教育和""牢记殷切嘱托、"
        rx1.Style.FontBold = True '字体加粗
        rx1.Style.FontSize = 18 '大体大小为16磅
        rx1.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
        'rx1.Style.Spacing.Bottom = 1 '和下面的对象(表格)距离3毫米
        ra.Children.Add(rx1) '加入到容器中
        Dim rx11 As New prt.RenderText '定义一个文本对象
        rx11.text = "忠诚干净担当、喜迎建党百年""专题教育 "
        rx11.Style.FontBold = True '字体加粗
        rx11.Style.FontSize = 18 '大体大小为16磅
        rx11.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
        'rx11.Style.Spacing.Bottom = 5 '和下面的对象(表格)距离3毫米
        ra.Children.Add(rx11) '加入到容器中
        
        
        Dim rx2 As New prt.RenderText '定义一个文本对象
        rx2.text = "工作提示单"
        rx2.Style.FontBold = True '字体加粗
        rx2.Style.FontSize = 18 '大体大小为16磅
        rx2.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
        rx2.Style.Spacing.Bottom = 3 '和下面的对象(表格)距离3毫米
        ra.Children.Add(rx2) '加入到容器中
        '指定行数?列数?列宽?行高
        rt.Rows.Count = 6 '设置总行数
        
        rt.Height = 85 '设置表格的高度
        rt.Rows(0).Height = 10 '设置第7行(显示备注的行)的高度,剩余高度被平均分排到其他行
        rt.Rows(1).Height = 50 '设置第7行(显示备注的行)的高度,剩余高度被平均分排到其他行
        rt.Rows(2).Height = 10 '设置第7行(显示备注的行)的高度,剩余高度被平均分排到其他行
        rt.Rows(3).Height = 10 '设置第7行(显示备注的行)的高度,剩余高度被平均分排到其他行
        rt.Rows(4).Height = 5 '设置第7行(显示备注的行)的高度,剩余高度被平均分排到其他行
        
        '设置合并单元格
        rt.Cells(4,0).SpanCols = 5 '第5行第2个单元格向右合并3列(用于显示uuid)
        rt.Cells(0,0).SpanCols = 5 '第5行第2个单元格向右合并3列(用于显示uuid)
        rt.Cells(1,0).SpanCols = 5 '第7行第1个单元格向右合并5列(用于显示备注)
        rt.Cells(2,1).SpanCols = 4 '第7行第1个单元格向右合并5列(用于显示备注)
        rt.Cells(3,2).SpanCols = 3 '第7行第1个单元格向右合并5列(用于显示备注)
        rt.Cells(2,0).SpanRows = 2
        rt.Cells(2,1).SpanRows = 1
        '设置表格样式
        rt.Style.TextAlignVert = prt.AlignVertEnum.Center '内容垂直居中
        'rt.Style.GridLines.All = New prt.Linedef '设置网格线
        '下面很简单,指定每一个单元格的内容
        
        rt.Cells(0,0).Text=  rw("待办人") & ":"
        rt.Cells(0,0).Style.TextAlignHorz=prt.AlignHorzEnum.Left
        rt.Cells(0,0).Style.Font = New Font("宋体", 16, FontStyle.Bold)
        rt.Cells(1,0).Text= "    根据" & rw("事项名称") & "工作安排,您应于" & Format(rw("应办时间"),"yyyy年M月d日") & "提交" & rw("事项内容") & "。经查,您至今未完成。请于" & Format(rw("到期时间"),"yyyy年M月d日") & "前将电子档资料扫码操作或将纸质资料交到院B201办公室汇总归档。"
        rt.Cells(1,0).Style.TextIndent = 100
        rt.Cells(1,0).Style.TextAlignVert=prt.AlignVertEnum.top
        rt.Cells(1,0).Style.LineSpacing=150
        rt.Cells(1,0).Style.Font = New Font("宋体", 16, FontStyle.Bold)
        rt.Cells(2,1).Text= rw("单位") & "党史学习教育领导小组"
        rt.Cells(2,1).Style.TextAlignHorz=prt.AlignHorzEnum.Center
        rt.Cells(2,1).Style.Font = New Font("宋体", 16, FontStyle.Bold)
        rt.Cells(3,2).Text= Format(Date.Today,"yyyy年M月d日")
        rt.Cells(3,2).Style.Font = New Font("宋体", 16, FontStyle.Bold)
        rt.Cells(3,2).Style.TextAlignHorz=prt.AlignHorzEnum.Center
        rt.Cells(3,2).Style.Spacing.Bottom = 3 '和下面的对象(表格)距离3毫米
        rt.Cells(4,0).text="扫我在线提交"
        rt.Cells(4,0).Style.TextAlignVert=prt.AlignVertEnum.Bottom
        rt.Cells(4,0).Style.Font = New Font("黑体", 8, FontStyle.Bold)
        ra.Children.Add(rt)
        Dim Bar As New BarCodeBuilder
        Bar.Symbology = Barpro.Symbology.QRCode
        bar.Code ="http://100.100.100.1100:9090/smrenwu.htm?a="& rw("待办人") & "&b=" & rw("事项名称")
        rg = new prt.RenderGraphics
        bar.DrawOnCanvas(rg.Graphics,0,0,0.5)
        Dim ra2 = rt.Cells(2,0).Area '引用单元格的容器 '
        ra2.Children.Add(rg)

        If i1= 1
            Dim rt2 As New prt.RenderText '定义一个文本对象
            rt2.Text = ".............................................................................................................................................................." '设置文本对象的内容
            ra.Children.Add(rt2)
        End If
        Doc.Body.ChildRen.Add(ra)
        
    Next
Next
Doc.Preview() '预览报表

 回到顶部