以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助:报表中各行动态引用图片列的内容  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=123591)

--  作者:cxmxjwlmq
--  发布时间:2018/8/18 17:52:00
--  求助:报表中各行动态引用图片列的内容

各位老师:在导出报表时,我想加入一个图片,代码如下时可以导出图片

 

   Sheet(7,1).Value = New XLS.Picture(GetImage("E:\\不良照片\\工序检验\\不良照片\\JH13002421.jpg"),6,6,190,190)

 

我想要的效果是:这个表里的一行中第7列是图片列,图片列的内容是图片的名称,要引用图片列的名称替换照片名称

 

   Sheet(7,1).Value = New XLS.Picture(GetImage("E:\\不良照片\\工序检验\\不良照片\\dt.rows(6)(nms(7)) "),6,6,190,190)

 

代码改完后导出的报表没有图片。

 

最终效果是:在报表的第8列,显示各行的图片列的图片!

 

   Sheet(r,8).Value = New XLS.Picture(GetImage("E:\\不良照片\\工序检验\\不良照片\\dt.rows(r)(nms(7)) "),6,6,190,190)

 

麻烦各位老师及大咖们给指点指点!


--  作者:有点蓝
--  发布时间:2018/8/19 8:57:00
--  
图片存放的是什么内容?路径是否正确?msgbox("E:\\不良照片\\工序检验\\不良照片\\dt.rows(6)(nms(7)) ")
--  作者:cxmxjwlmq
--  发布时间:2018/8/19 9:42:00
--  

老师:

   图片存放的是一张张图片。路径正确。msgbox("E:\\不良照片\\工序检验\\不良照片\\dt.rows(6)(nms(7)) ") 后显示:

 

导出的报表如下:

这个是按钮代码:

Dim dt As Table = Tables("整车质量报表_table1")
    Dim nms()  As String = {"日期1","编号","代号","底盘号","发动机号","序号","不良描述","本地不良照片","部门","检验岗1","班组","操作人","考核","原因分析","预防措施"} \'要导出的列名
    Dim caps() As String = {"日期","编号","代号","底盘号","发动机号","序号","不良描述","照片","部门","检验岗","班组","操作人","考核","原因分析","预防措施"}  \'对应的列标题 
    Dim szs() As Integer = {90,50,50,80,100,45,350,120,40,60,60,70,40,400,550} \'对应的列宽 
Dim Book As New XLS.Book \'定义一个Excel工作簿 
Dim Sheet As XLS.Sheet = Book.Sheets(0) \'引用工作簿的第一个工作表
Dim at As XLS.Style = Book.NewStyle \'日期列的显示格式 
    at.Format = "yyyy-MM-dd"
    at.BorderTop = XLS.LineStyleEnum.Thin 
    at.BorderBottom = XLS.LineStyleEnum.Thin
    at.BorderLeft = XLS.LineStyleEnum.Thin
    at.BorderRight = XLS.LineStyleEnum.Thin
    at.BorderColorTop = Color.Black
    at.BorderColorBottom = Color.Black
    at.BorderColorLeft = Color.Black
    at.BorderColorRight = Color.Black
    at.AlignHorz = XLS.AlignHorzEnum.Center \'水平居中
    at.AlignVert = XLS.AlignVertEnum.Center \'垂直居中
Dim bt As XLS.Style = Book.NewStyle() \'ct样式为:黑线网格线,内容居左
    bt.BorderTop = XLS.LineStyleEnum.Thin  
    bt.BorderBottom = XLS.LineStyleEnum.Thin
    bt.BorderLeft = XLS.LineStyleEnum.Thin
    bt.BorderRight = XLS.LineStyleEnum.Thin
    bt.BorderColorTop = Color.Black
    bt.BorderColorBottom = Color.Black
    bt.BorderColorLeft = Color.Black
    bt.BorderColorRight = Color.Black
    bt.AlignHorz = XLS.AlignHorzEnum.Center     \'水平居中
    bt.AlignVert = XLS.AlignVertEnum.Center \'垂直居中
Dim ct As XLS.Style = Book.NewStyle() \'ct样式为:黑线网格线,内容居左
    ct.BorderTop = XLS.LineStyleEnum.Thin  
    ct.BorderBottom = XLS.LineStyleEnum.Thin
    ct.BorderLeft = XLS.LineStyleEnum.Thin
    ct.BorderRight = XLS.LineStyleEnum.Thin
    ct.BorderColorTop = Color.Black
    ct.BorderColorBottom = Color.Black
    ct.BorderColorLeft = Color.Black
    ct.BorderColorRight = Color.Black
    ct.AlignHorz = XLS.AlignHorzEnum.Left \'水平居左
    ct.AlignVert = XLS.AlignVertEnum.Center \'垂直居中
 For c As Integer = 0 To nms.length -1  \'指定表头
    Sheet(0, c).Value = caps(c) \'指定列标题
    Sheet(0, c).Style = bt
    Sheet.Cols(c).Width = szs(c) \'指定列宽
 Next
 For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据
    For c As Integer = 0 To nms.length -1
        Sheet(r +1, c).Value = dt.rows(r)(nms(c))
        Sheet(r +1, c).Style = bt  \'指定其余列显示居中带边框
        Sheet(r +1, 0).Style = at    \'指定0列显示日期格式
        Sheet(r +1, 6).Style = ct    \'指定6列显示居左带边框
        Sheet(r +1, 12).Style = ct    \'指定6列显示居左带边框
        Sheet(r +1, 13).Style = ct    \'指定6列显示居左带边框
     Next
 Next
Sheet(7,1).Value = New XLS.Picture(GetImage("E:\\不良照片\\工序检验\\不良照片\\JJ2199841.jpg"),6,6,190,190)   \'照片的名字能随当前行图片列名字一起导出到报表中  

\'Sheet(r,8).Value = New XLS.Picture(GetImage("E:\\不良照片\\工序检验\\不良照片\\dt.rows(r)(nms(7)) "),6,6,190,190)     \'最终的效果是这样的,现在不能动态提出行中图片名称?   
msgbox("E:\\不良照片\\工序检验\\不良照片\\dt.rows(6)(nms(7)) ")
Book.Save( "D:\\质量管理系统\\日报\\工序检验报表.xls" )
Dim Proc As New Process
Proc.File = "D:\\质量管理系统\\日报\\工序检验报表.xls"
Proc.Start()

 

请老师费心!

 


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

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

--  作者:有点蓝
--  发布时间:2018/8/19 9:45:00
--  
Sheet(r,8).Value = New XLS.Picture(GetImage("E:\\不良照片\\工序检验\\不良照片\\" & dt.rows(r)(nms(7))),6,6,190,190) 
--  作者:cxmxjwlmq
--  发布时间:2018/8/19 13:16:00
--  

谢谢老师指教!

看来还是没有彻底理解帮助中的单引号双引号在何时应用!

 

 

  追问一下问题:我想动态合成一个报表,当天导出的报表,报表名称是当天的日期加工序检验报表。如 20180819工序检验报表.XLS。但怎样也导不出来!

  代码如下:

   Book.Save( "D:\\质量管理系统\\日报\\工序检验报表.xls" )    
  \'Book.Save( "D:\\质量管理系统\\日报\\ \'Date.Today &工序检验报表.xls\'" ) \'保存为当天日期的工序检验报表.xls。
还请老师多费心!


--  作者:有点蓝
--  发布时间:2018/8/19 15:30:00
--  
一样是4楼的用法啊!不是条件表达式,不是sql,基本和单引号没有任何关系

Book.Save( "D:\\质量管理系统\\日报\\ " & Date.Today & "工序检验报表.xls" ) 

--  作者:cxmxjwlmq
--  发布时间:2018/8/19 17:35:00
--  

谢谢,原来是把前面和后面的双引号括起来,中间的是日期,明白了,今天学了很多,这两个问题困绕了我很长时间了!

再次感谢老师指教!


--  作者:cxmxjwlmq
--  发布时间:2018/8/20 13:32:00
--  

老师:这段代码我想要的效果是:当第七列的内容不为空时,行高设定为200,当为空值是,行高设定为40.但没有效果。

 For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据
    For c As Integer = 0 To nms.length -1
        Sheet(r +1, c).Value = dt.rows(r)(nms(c))
        If  dt.rows(r)(nms(7))  IsNot   Nothing   Then 
            Sheet.Rows(r+1).Height = 200  \'设置第3行的行高
         Else
            Sheet.Rows(r+1).Height = 40  \'设置第3行的行高
        End If
        Sheet(r+1,7).Value = New XLS.Picture(GetImage("E:\\不良照片\\工序检验\\不良照片\\" & dt.rows(r)(nms(7))),6,6,190,190) 

 

请老师给指点一下!


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

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