Foxtable(狐表)用户栏目专家坐堂 → excel打印问题


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

主题:excel打印问题

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


加好友 发短信
等级:四尾狐 帖子:801 积分:7697 威望:0 精华:0 注册:2015/9/14 14:26:00
excel打印问题  发帖心情 Post By:2020/7/6 16:12:00 [只看该作者]

Vars("w")=""

Dim r As DataRow = args(0)

Dim drr As DataRow= DataTables("系统设置").sqlFind("图章存储位置<>''")
Dim bglx As String= r("报告类型")
Dim Proc As New Process '打开PDF文件
Dim b As WinForm.Label = Forms("首页").Controls("Label1")
b.Text="正在打印"

Dim cmd As new SQLCommand
cmd.C
cmd.CommandText="s elect 签名 from 用户表 where username ='"& r("审核") &"'"
Dim shqm As String= cmd.ExecuteScalar
cmd.CommandText="s elect 签名 from 用户表 where username ='"& r("批准") &"'"
Dim pzqm As String= cmd.ExecuteScalar
'cmd.CommandText="s elect 签名 from 用户表 where username ='"& r("制单") &"'"
Dim zjy As String= r("质检员")
'Dim r As Row = Tables("质检报告主表").Current

If r("单据状态")<>"" Then
    'If r("报告类型")="包装油出厂检验报告" Then
    
    Dim Book As New XLS.Book(drr("图章存储位置") & "Attachments\"& r("报告类型") &".xlsx")
    
    Dim fl As String = ProjectPath & "Reports\PDF"& format(now(),"yyMMdd")& Rand.Next(1000) &".xlsx"
    
    If r("质检员")="" Then
        MessageBox.Show("尚未制定质检员,请选择")
        Return 0
    End If
    book.AddDataTable("质检报告主表","pk","S elect * from 质检报告主表 where 编号= '"& r("编号")&"'") '添加父表
    book.AddDataTable("质检报告附表","pk","S elect * from 质检报告附表 where 编号= '"& r("编号") &"'") '添加子表
    book.AddDataTable("成品有出厂检验","pk","S elect * from 成品有出厂检验 where 编号= '"& r("编号") &"'And   产品名称='"& Vars("pinming") &"' and 规格='"&  Vars("guige") &"'") '添加子表
    book.AddRelation("质检报告主表","编号","质检报告附表","编号") '建立关联
    book.AddRelation("质检报告主表","编号","成品有出厂检验","编号") '建立关联
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    '
    For i1 As Integer=0 To 25
        For j As Integer=0 To 25
            
            If sheet(i1,j).Value="检验员:" Then
                sheet(i1,j+1).Value=New XLS.Picture(GetImage(zjy))
                'sheet(i1,j+3).Value=New XLS.Picture(GetImage(shqm))
                sheet(i1,j+5).Value=New XLS.Picture(GetImage(shqm))
                
                Exit For
            End If
            
           If sheet(i1,j).Value="结论" Then 

Sheet(i1, j+3).Value  = New XLS.Picture(GetImage(drr("质检公章")))
'Sheet(0, 3).Value  = New XLS.Picture(GetImage(drr("质检公章")))
Exit For
End If
 
        Next
    Next
    
    'Sheet(Sheet.Rows.Count-7, 4).Value  = New XLS.Picture(GetImage(drr("质检公章")))
    
    'Sheet(0, 2).Value  = New XLS.Picture(GetImage(drr("质检公章")))
    
    Book.Build() '
    
    ''开始打印报告
    book.Save(fl)
    'cmd.CommandText= "u pdate 身份证信息 set 报告编号='"& vars("报告编号")  &"' ,打印时间= '"& Date.Now &"' where 身份证号码='"& vars("haoma") &"' And 读取日期= '"& Date.Today &"' "
    'Dim dss As DataRow= DataTables("身份证信息").SQLFind("身份证号码='"& Vars("号码") &"' And 读取日期= '"& Date.Today &"' ")
    'If dss IsNot Nothing Then
    'dss("报告编号")= r("编号")
    'dss("打印时间")= Date.Now
    'dss.Save
    'End If
    '
    'cmd.ExecuteNonQuery
    'MessageBox.Show(cmd.CommandText)
    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)
    Dim Ws As MSExcel.WorkSheet
    If bglx.Contains("包装") Then
        ws = Wb.WorkSheets("包装油出厂质检报告")
    Else
        
        ws= Wb.WorkSheets("油脂发货检验报告")
    End If
    With Ws.PageSetup
       .PrintArea = "A1:H10"   '打印工作表的指定区域
        .PrintArea = Ws.UsedRange.Address   '打印工作表的使用区域
       '.PrintTitleColumns = Ws.Columns("A:H").Address   '打印列标题(在每一页的左边重复出现)
        .PrintTitleRows = Ws.Rows(1).Address '打印行标题(在每一页的顶部重复出现)
        '设置页面
       .PaperSize = MSExcel.XlPaperSize.xlPaperA4   '纸张大小
        .LeftMargin = 30 '页面左边距
        .RightMargin = 30'页面右边距
        .TopMargin = 50  '页面顶部边距
        .BottomMargin = 50   '页面底部边距
        .HeaderMargin = 40   '页面顶端到页眉的距离
        .FooterMargin = 40   '页脚到页面底端的距离
        .CenterHorizontally = True   '页面水平居中
        .CenterVertically = True '页面垂直居中
        ''设置页眉
        .LeftHeader = "打印日期: &D" '左页眉,&D表示日期
        .CenterHeader = "&""隶书,常规""&20  "   '中页眉,并将字体设置为隶书和20号字大小
        .RightHeader = "打印: " &  vars("姓名") & Vars("号码")              'App.UserName '右页眉
        ''设置页脚
        '' .LeftFooter = "文件: &F  &A" '左页脚,&F表示文件名,&A表示工作表名
        .CenterFooter = ""   '中页脚为空
        .RightFooter = "第 &P 页  共 &N 页"  '右页脚
        ''打印模式
        .Orientation = MSExcel.xlPageOrientation.xlPortrait  '纵向打印
        ''.Orientation = MSExcel.xlPageOrientation.xlLandscape '横向打印
        '' .PrintHeadings = True'打印行号和列标
        '' .PrintGridlines = True   '打印网格线
        ''缩放打印
        .Zoom = False '以下设置将缩印在一页内
        .FitToPagesWide = 1  '按照1页的宽度打印
        .FitToPagesTall = 1  '按照1页的高度打印
    End With
    App.Visible = False
    Ws.Printout
    App.Quit
    'wb.Save()
    'MessageBox.Show("1")
    'Wb.close
    Dim ps1 As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("excel")
    For Each p As System.Diagnostics.Process In ps1
        
        p.kill
    Next
    Dim ps11 As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("wps")
    For Each p As System.Diagnostics.Process In ps11
        
        p.kill
    Next
    
    
    
    
    
    
    
Else
    MessageBox.Show("请先审核单据在生成报告")
    Return 0
    'End If

使用上面的代码打印,遇到以下问题
如果   Dim fl As String = ProjectPath & "Reports\PDF"& format(now(),"yyMMdd")& Rand.Next(1000) &".xlsx"  定义成
  Dim fl As String = ProjectPath & "Reports\PDF"& format(now(),"yyMMdd")& Rand.Next(1000) &".xls"
在执行时 出现以下报错
无法使用本格式保存该工作簿,至少一个表单包含太多的列

使用Dim fl As String = ProjectPath & "Reports\PDF"& format(now(),"yyMMdd")& Rand.Next(1000) &".xlsx"
打印100多张纸,第一张如下图,后面都是空白
End If
图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20200706160346.jpg
图片点击可在新窗口打开查看

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


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

模板是不是没有指定有效范围:http://www.foxtable.com/webhelp/topics/0205.htm,或者这个end标记被其它代码删除了

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


加好友 发短信
等级:四尾狐 帖子:801 积分:7697 威望:0 精华:0 注册:2015/9/14 14:26:00
  发帖心情 Post By:2020/7/6 16:45:00 [只看该作者]

Dim fl As String = ProjectPath & "Reports\PDF"& format(now(),"yyMMdd")& Rand.Next(1000) &".xlsx"  定义成
  Dim fl As String = ProjectPath & "Reports\PDF"& format(now(),"yyMMdd")& Rand.Next(1000) &".xls"
在执行时 出现以下报错
无法使用本格式保存该工作簿,至少一个表单包含太多的列

都是这个问题吗?
我看了模板  最后有<end>

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


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

模板发上来看看。

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


加好友 发短信
等级:四尾狐 帖子:801 积分:7697 威望:0 精华:0 注册:2015/9/14 14:26:00
  发帖心情 Post By:2020/7/7 8:37:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200707083810.png
图片点击可在新窗口打开查看
程序使用很久了,最近出现这个问题的。
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200707083756.png
图片点击可在新窗口打开查看
这个报错 只要把 xls 修改成xlsx 就可以了,但之前使用是正常的

模板 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:油脂发货检验报告.rar


[此贴子已经被作者于2020/7/7 8:41:45编辑过]

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


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

end标记问题,下方有2个end,右侧没有end。


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


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


加好友 发短信
等级:四尾狐 帖子:801 积分:7697 威望:0 精华:0 注册:2015/9/14 14:26:00
  发帖心情 Post By:2020/7/7 10:07:00 [只看该作者]

按上面的修改了也不行,还是那样的报错或 打印很小,保存的excel文件 打开没问题

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


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

减少代码测试。把vba的代码都去掉只保留打印的代码测试有没有问题?然后逐个添加vba代码看是哪一个有影响

 回到顶部