Foxtable(狐表)用户栏目专家坐堂 → 生成带图片的报表


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

主题:生成带图片的报表

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


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
生成带图片的报表  发帖心情 Post By:2023/3/3 21:21:00 [只看该作者]

添加了一个按钮控件,生成电子报,代码如下 :

Dim Book As New XLS.Book(ProjectPath & "Attachments\" & "各校学生胸卡模版.xls")  '打开模板
Dim Sheet0 As XLS.Sheet = Book.Sheets("打校园卡")
Sheet0(0, 25).Value =  "<end>"
Sheet0(1,  0).Value = "<兴学生名册,@3>"  
Sheet0(1, 25).Value =  "<all>"
Sheet0(4,  5).Value = "[学生_姓名]"
Sheet0(4, 13).Value = "[学生_姓名+1]"
Sheet0(4, 21).Value = "[学生_姓名+2]"
Sheet0(3,  5).Value = New XLS.Picture(GetImage( ProjectPath & "\学生照片\照片总库\323232201814024519" & ".jpg" ))
Sheet0(3,  5).Value = New XLS.Picture(GetImage( ProjectPath & "\学生照片\照片总库\" & "[身份号码]" & ".jpg" ))
Sheet0(8, 5).Value = "[第1家长_电话]"
Sheet0(8,13).Value = "[第1家长_电话+1]"
Sheet0(8,21).Value = "[第1家长_电话+2]"
Sheet0(11, 0).Value = "<兴学生名册>"
Sheet0(12, 0).Value = "<end>"     '修改模板,加入信息
Dim fl As String = ProjectPath & "导出表\" & Vars("年度") & Vars("学期") & Vars("县市") & Vars("单位名称") & "学生胸卡.xls"
Book.Build() '生成细节区(此句出错)
Book.Save(fl) '保存工作簿
Dim Proc As New Process '打开工作簿
Proc.File = fl
Proc.Start()

遇到疑问:敬请老师赐教,感谢!
1、到了 执行  Book.Build() 就出错了
2、其中的 Sheet0(3,  5).Value  本准备写成 New XLS.Picture(GetImage( ProjectPath & "\学生照片\照片总库\" & "[身份号码]" & ".jpg" )) ,
     只是其中黄色部分写法不对,临时写个实际身份号码执行了,我这里【身份号码】是表的一列,不知道用什么括号来写?
     我想:实在不行我每次选中3行,用遍历的方式把三行的身份证号赋值给一个变量,用变量来表示照片的地址

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


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/4 9:01:00 [只看该作者]

1、提示什么错误?建议先直接在模板里设计好,测试没有问题后,再改为使用代码动态设置

2、如果要在模板里引用图片列,应该这样用:http://www.foxtable.com/webhelp/topics/1387.htm

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


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2023/3/5 22:24:00 [只看该作者]

我自己尝试这样写的,运行成功,但有个颜色问题未能解决,先上代码:

'''
Dim 勾选人数 As Integer
For Each dr0 As Row In Tables("兴学生名册").Rows
    If dr0.Checked = True And dr0("有照片") = 1 Then
        勾选人数 = 勾选人数 + 1
    End If
Next

If 勾选人数 = 0 Then
    MessageBox.Show( "请先勾选一下需要打印的有照片的学生" )
    Return '返回
End If

Dim y,x As Integer
Dim i As Integer = 0
Dim Book As New XLS.Book(ProjectPath & "Attachments\" & "各校学生胸卡模版.xls")  '打开模板
Dim Sheet0 As XLS.Sheet = Book.Sheets("打校园卡")
For Each dr As Row In Tables("兴学生名册").Rows
    If dr.Checked = True Then
        i = i + 1
        y = 3 +  Int( ( i - 1 ) / 3 )  * 11
        x = 5 + ( ( i - 1 ) Mod 3 ) * 8
        Sheet0( y - 3 , x - 3 ).Value = New XLS.Picture(GetImage( ProjectPath & "\Images\胸卡图片.png" ),0,0,265,405)
        Sheet0(y, x).Value = New XLS.Picture(GetImage( ProjectPath & "\学生照片\照片总库\" & dr("身份号码") & ".jpg" ),0,0,100,140)
        Sheet0( y + 1 , x - 2 ).Value = "姓名:"
        Sheet0( y + 1 , x     ).Value = dr("学生_姓名")
        Sheet0( y + 2 , x - 2 ).Value = "班级:"
        Sheet0( y + 2 , x     ).Value = dr("本学期_年级") & "年级(" & dr("本学期_班别") & ")班"
        Sheet0( y + 3 , x - 2 ).Value = "编号:"
        Sheet0( y + 3,  x     ).Value = (dr("本学期_年级") * 100 + dr("本学期_班别"))* 100 + dr.index + 1
        Sheet0( y + 4 , x - 2 ).Value = "乘车:"
        If dr("乘车_车费") > 0 OrElse dr("暂免_乘车_车费") = True Then
            Sheet0( y + 4 , x     ).Value = dr("乘车_车号") & dr("乘车_站点")
        Else
            Sheet0( y + 4 , x     ).Value = "(不乘车)"
        End If
        Sheet0( y + 5 , x - 2 ).Value = "电话:"
        Sheet0( y + 5 , x     ).Value = dr("第1家长_电话")
        Sheet0( 0  , 2    ).Style.BackColor = Color.red  红色
     End If
Next
Dim fl As String = ProjectPath & "导出表\" & Vars("年度") & Vars("学期") & Vars("县市") & Vars("单位名称") & "学生胸卡.xls"
Book.Save(fl) '保存工作簿
Dim Proc As New Process '打开工作簿
Proc.File = fl
Proc.Start()

其中,把 Sheet0( 0  , 2 ) 设为红色,我想改为设置成 RGB(172,220,249) 这种颜色,请问老师怎么改

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


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/5 22:47:00 [只看该作者]


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


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2023/3/6 15:11:00 [只看该作者]

谢谢老师指点!
我加了颜色,设置了居中居左的格式,还请教一个问题是:如果用设置的密码保护这个工作表 ?参考了http://www.foxtable.com/webhelp/scr/2121.htm,但没有成功

'''在上面的红色部分替换成下面的代码:
                Dim Style As XLS.Style = Book.NewStyle()
                Style.BackColor = Color.FromARGB(255,172,220,249)
                Style.AlignHorz = XLS.AlignHorzEnum.Center   'Center 居中
                Dim Style2 As XLS.Style = Book.NewStyle()
                Style2.BackColor = Color.FromARGB(255,172,220,249)
                Style2.AlignHorz = XLS.AlignHorzEnum.Left   '.Left 居左
                Style.BackColor = Color.FromARGB(255,172,220,249)
                For b As Integer = 0 To 5
                    For a As Integer = 0 To 10
                        If b <= 2 Then
                            Sheet0( y - 3 + a , x - 3 + b ).Style  = style2
                        Else
                            Sheet0( y - 3 + a , x - 3 + b ).Style  = style
                        End If
                    Next
                Next

[此贴子已经被作者于2023/3/6 15:11:20编辑过]

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


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/6 15:13:00 [只看该作者]

保护工作表,写了什么代码?

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


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2023/3/6 16:20:00 [只看该作者]

找的如下代码,但不知道怎么加到我的代码里,敬请老师多多指教啊!

Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\Report.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets("同期对比")
Ws.Protect(Password:="hhh")  '以密码保护
Wb.Save
App.Quit

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


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/6 16:24:00 [只看该作者]

……
Dim fl As String = ProjectPath & "导出表\" & Vars("年度") & Vars("学期") & Vars("县市") & Vars("单位名称") & "学生胸卡.xls"
Book.Save(fl) '保存工作簿
Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets("打校园卡")
Ws.Protect(Password:="hhh")  '以密码保护
Wb.Save
App.Visible = True


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


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2023/3/6 21:29:00 [只看该作者]


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



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

出错就在红色框中的代码,蓝老师,你请看一下,是什么语法问题 ?

即使另添加一个按钮,用下列代码运行也是出错
Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("F:\123.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets("打校园卡")
Ws.Protect(Password:="hhh")  '以密码保护
Wb.Save
App.Visible = True

[此贴子已经被作者于2023/3/6 22:01:59编辑过]

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


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/6 21:49:00 [只看该作者]

电脑系统安装的office有问题。卸载所有office,然后重新安装完整版的office。如果有安装wps,也卸载掉

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