Dim sz() As String
If tb.Cols.Contains("部门编号") = True Then
sz = Functions.Execute("dwcjgq",tb.Current("部门编号")).split("|")
End If
Dim ppcs() As String
Dim file As String
Dim img As image
Dim tm As String
Dim fl As String = ProjectPath & "Attachments\报表模板\$$$临时文件.xls"
If FileIsOpened(fl)= True Then
ShowAppWindow("$$$临时文件.xls",5)
End If
Select Case tb.name
Case "房屋台账"
tm = ProjectPath & "Attachments\报表模板\房屋台账模板.xls" '指定模板文件
End Select
If FileSys.FileExists(tm) = False Then
Messagebox.Show("报表模板文件【" & tm & "】不存在 !" & vblf & "请联系系统超级管理员 !","提示", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return False
End If
Dim Book As New XLS.Book(tm) ' 定义一个工作簿"
'对标记进行更新
Book.Marks.Add("tihuan单位简称",sz(1))
Book.Marks.Add("tihuan所属车间",sz(3))
Book.Marks.Add("tihuan所属工区",sz(5))
Dim Sheet As XLS.Sheet = Book.Sheets(0)
'With sheet.PrintSetting
'.Header = "&L&D &C&T&G &R&F"
'End With
Book.Build() '生成报表
Book.Save(fl)
Dim Book1 As New XLS.Book(fl)
Dim Sheet1 As XLS.Sheet = Book1.Sheets(0)
Select Case tb.name
Case "房屋台账"
file = ProjectPath & "RemoteFiles\" & tb.Current("照片")
img = getImage(file)
ppcs = Functions.Execute("tupian",Sheet1,img,10,24,4,15).split("|") ’这个函数主要是计算出最终要显示的图片位置和大小。
Sheet1(4,9).Value = New
'此处疑问:10,24 是图片单元格所占的列,在模板中该单元格的位置是10-24,在生成的临时文件中是9-23
4,9是图片单元格位置,在模板中该单元格的位置是4,10,在生成的临时文件中是4,9
试了多次,为什么计算位置时要引用模板中该单元格的位置,而插入图片时又要引用临时文件中单元格的位置?此时应该都引用临时文件中单元格的位置才对呀。
XLS.Picture(img,Cint(ppcs(0)),Cint(ppcs(1)),Cint(ppcs(2)),Cint(ppcs(3)))
If tb.Current("审核人").trim(" ") <> "" Then
Sheet1(1,22).Value = New XLS.Picture(GetImage("已审核.png"),-30,-20,95,60)
Else
Sheet1(1,21).Value = New XLS.Picture(GetImage("未审核.png"),-30,-20,95,60)
End If
End Select
Book1.Save(fl) '保存工作簿
Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl) '若模板的页眉中有图片,执行到此处就提示打不开文件。单独用Excel打开该临时文件,提示不能读取文件,且不能进行修复。若将页眉中的图片删除,则一切正常。
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
'With Ws.PageSetup
''设置打印区域
''''.PrintArea = "A1:H10" '打印工作表的指定区域
''''.PrintArea = Ws.UsedRange.Address '打印工作表的使用区域
''''.PrintTitleColumn = Ws.Column("A:H").Address '打印列标题(在每一页的左边重复出现)
''''.PrintTitleRows = Ws.Rows(1).Address '打印行标题(在每一页的顶部重复出现)
''设置页面
'.PaperSize = MSExcel.XlPaperSize.XlPaperA4 '纸张大小
'.LeftMargin = 19 '页面左边距
'.RightMargin = 14 '页面右边距
'.TopMargin = 25 '页面上边距
'.BottomMargin = 15 '页面下边距
'.HeaderMargin = 8 '页眉顶边距
'.FooterMargin = 8 '页脚下边距
''''.CenterHorizontally = True '页面水平居中
''''.CenterVertically = True '页面垂直居中
''''设置页眉
'''.LeftHeader = "打印日期:" & MyDate '左页眉
'''.CenterHeader = "&""隶书,常规""&16 " & tb.name '中页眉
''''.RightHeader = "已审核.png" '"打印者:" & _UserName '右页眉
'''.Header = "&L&D &C&T&G &R&F"
''设置页脚
'.LeftFooter = "" '左页脚
'.CenterFooter = "第 &P 页 共 &N 页" '中页脚
'.RightFooter = "" '右页脚
''打印模式
'.Orientation = MSExcel.XlPageOrientation.XlPortrait '纵向打印
''''.Orientation = MSExcel.XlPageOrientation.XlLandscape '横向打印
''''.PrintHeadings = True '打印行号和列标
''''.PrintGridlines = True '打印网格线
''缩放打印
''''.Zoom = False '以下设置将缩印在一页内
''''.FitToPagesWide = 1 '按照1页的宽度打印
''''.FitToPagesTall = 1 '按照1页的高度打印
'End With
''''wb.save
''''Book1.Save(fl) '保存工作簿
App.visible = True
ShowAppWindow("$$$临时文件.xls",2)
If e.StripItem.Name = "预览" Then
Ws.PrintPreview
Else
Ws.PrintOUT
End If
App.Quit