以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  生成带图片的报表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=185592)

--  作者:zhangchi96
--  发布时间: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行,用遍历的方式把三行的身份证号赋值给一个变量,用变量来表示照片的地址

--  作者:有点蓝
--  发布时间:2023/3/4 9:01:00
--  
1、提示什么错误?建议先直接在模板里设计好,测试没有问题后,再改为使用代码动态设置

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

--  作者:zhangchi96
--  发布时间: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) 这种颜色,请问老师怎么改

--  作者:有点蓝
--  发布时间:2023/3/5 22:47:00
--  
http://www.foxtable.com/webhelp/topics/1146.htm
--  作者:zhangchi96
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间:2023/3/6 15:13:00
--  
保护工作表,写了什么代码?
--  作者:zhangchi96
--  发布时间: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
--  作者:有点蓝
--  发布时间: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
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间:2023/3/6 21:49:00
--  
电脑系统安装的office有问题。卸载所有office,然后重新安装完整版的office。如果有安装wps,也卸载掉