-- 作者:xvkewen
-- 发布时间:2017/9/12 14:42:00
-- Excel报表打印问题
遇到一个奇怪的问题,同是以下代码,根据目录树的的节点不同,选择不同的模版进行导出(如附件),我用“大货肩带”模版导出就没有问题,但是用“大货后工序”导出就会有下图的问题;经过一番测试,当款号(StyleNo)字符在8个以内可以正常导出,但是超过8个字符就是出现以下问题;麻烦各位老师帮忙支支招;谢谢了;根据实际按例,程序应该是执行的以下黄色底的部分?
此主题相关图片如下:123.jpg
Dim TreeNode As WinForm.TreeView = e.Form.Controls("TreeView1") Dim TreeNodeStr As String Dim CurRow As Row = Tables("MainSchedule").Current \'获取当前排期行; Dim sampleTypeStr As String = CurRow("SampleType") \'获取当前排期样办类型 Dim StyleStr As String = CurRow("StyleNo") Dim rl As String = _userroles \'获取当前登录用户角色 Dim Book As New XLS.Book() Dim filepath As String \'定义报表输出路径; Dim styleToNarrow() As String = StyleStr.Split("*")
If styleToNarrow.Length > 1 Then styleStr = styleToNarrow(1) \'只获取SAP款号 End If
If rl.Contains("配料") Or rl.Contains("系统管理员") Then \'根据不同的用户角色选择不同的工序模版; If sampleTypeStr.Contains("PP") Then If TreeNode.SelectedNode.Text <> "" Then TreeNodeStr = TreeNode.SelectedNode.Text \'获取PP办部件名称 End If If TreeNodeStr.Contains("大货") \'如果样办的部件名称包含"大货"字样,则调用大货工艺书模版; Book = New XLS.Book(ProjectPath & "Attachments\\工艺书(" & vars("ProcessPartName") & ").xls") \'打开模板 Else msgbox("你选择的不是大货工艺,请重新选择~") Return End If Else Book = New XLS.Book(ProjectPath & "Attachments\\工艺书(配料中心).xls") \'如果样办类型不是PP办,那么只调用正常做办的工艺书模板 End If Else \'除配料员与系统管理员外,其他用户的报表打印格式; If sampleTypeStr.Contains("PP") Then If TreeNode.SelectedNode.Text <> "" Then TreeNodeStr = TreeNode.SelectedNode.Text \'获取PP办部件名称 End If If TreeNodeStr.Contains("大货") \'如果样办的部件名称包含"大货"字样,则调用大货工艺书模版; Book = New XLS.Book(ProjectPath & "Attachments\\工艺书(" & vars("ProcessPartName") & ").xls") \'打开模板 Else msgbox("你选择的不是大货工艺,请重新选择~") Return End If Else Book = New XLS.Book(ProjectPath & "Attachments\\工艺书(QA).xls") \'\'如果样办类型不是PP办,那么只调用正常做办的工艺书模板 End If End If
\'开始调用已经打印的工艺书模版设置数据导出条件 ,并生成报表; Dim Sheet As XLS.Sheet = Book.Sheets(0) If sampleTypeStr.Contains("PP") Then If vars("ProcessPartName") <> "" Then \'对已经打开工艺书模板设置导出的筛选条件; Sheet(7,15).Value = "< SamplePart = \'" & vars("ProcessPartName") & "\'>" End If Else If vars("ProcessPartName") <> "" Then \'对已经打开工艺书模板设置导出的筛选条件; If rl.Contains("配料") Or rl.Contains("系统管理员") Then Sheet(11,18).Value = "< SamplePart = \'" & vars("ProcessPartName") & "\'>" Else Sheet(7,18).Value = "< SamplePart = \'" & vars("ProcessPartName") & "\'>" End If Else If rl.Contains("配料") Or rl.Contains("系统管理员") Then Sheet(11,18).Value = "" Else Sheet(7,18).Value = "" End If End If End If \'针对是否为PP办设置不同的输出文件名; If sampleTypeStr.Contains("PP") Then filepath = "D:\\reports\\" & StyleStr & "(" & vars("ProcessPartName") & ")工艺书.xls" Else filepath = "D:\\reports\\" & CurRow("SrsNO") & "(" & vars("ProcessPartName") & ")工艺书.xls" End If Book.Build() \'生成细节区 Book.Save(filepath)\'保存工作簿 \'以下代码用于设置自动换行及调整行高(对合并单元格无效) Dim App As New MSExcel.Application Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(filepath) Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1) Dim Rg As MSExcel.Range = Ws.Cells Rg.WrapText = True Rg.EntireRow.AutoFit \'自动调整行高 wb.saved = True App.DisplayAlerts = False App.Visible = True If rl.Contains("配料") Then \' Or rl.Contains("系统管理员") Ws.PrintOut(Preview:=False,ActivePrinter:="doPDF v7") \'直接打印; Else Return End If App.Quit
|