找回密码
 立即注册

QQ登录

只需一步,快速开始

631324227

注册会员

2

主题

8

帖子

34

积分

注册会员

积分
34
最新发帖
631324227
注册会员   /  发表于:2016-8-5 16:49  /   查看:6726  /  回复:12

    Private Sub PrintDocument1_PrintPage(sender As Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        Dim rect As Rectangle
        rect = New Rectangle(0, 0, 500, 100)
        ‘旋转导致速度慢,不旋转对速度没影响
        e.Graphics.TranslateTransform(0, e.PageSettings.PaperSize.Height)
        e.Graphics.RotateTransform(-90)

        FpSpread1.OwnerPrintDraw(e.Graphics, rect, 0, 1)
    End Sub



调用OwnerPrintDraw方法前对Graphics进行了移位和旋转操作,导致速度很慢,要过好长时间OwnerPrintDraw方法才能执行完。

Spread.Net 6   版本 6.0.2005.2008

12 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-8-5 17:48:16
沙发
问题已收到,这里会根据您的描述尝试重现问题,有结果回复给您
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-8-8 15:50:32
板凳
您好,我这里通过您的代码在最新版本中测试没有发现十分缓慢的的问题。应该是老版本的性能问题,建议升级新版本。
回复 使用道具 举报
631324227
注册会员   /  发表于:2016-8-8 17:07:23
地板
能帮忙看下我用的这个版本里面是否存在这个问题吗?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-8-9 08:25:26
5#
OK。您也可以新建一个项目,插入Spread后调用打印方法,看是否也十分缓慢。排除下是某些其他设置导致的缓慢。
回复 使用道具 举报
631324227
注册会员   /  发表于:2016-8-10 10:54:43
6#
dexteryao 发表于 2016-8-9 08:25
OK。您也可以新建一个项目,插入Spread后调用打印方法,看是否也十分缓慢。排除下是某些其他设置导致的缓慢 ...

Imports FarPoint.Win.Spread
Imports System.Drawing.Printing

Public Class Form1
    Private _spread As FpSpread
    Private _printDocument As PrintDocument
    Private _printPreviewDialog As New PrintPreviewDialog

    Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        _spread = New FpSpread
        _spread.Sheets.Add(New SheetView)
        '数据量的大小会影响打印速度
        _spread.Sheets(0).Cells(0, 0).Text = "测试"
        _spread.Sheets(0).Cells(30, 0).Text = "测试2"
        _spread.Sheets(0).Cells(0, 10).Text = "测试3"

        _printDocument = New PrintDocument
        AddHandler _printDocument.PrintPage, AddressOf PrintPage
        _printPreviewDialog.Document = _printDocument
        _printPreviewDialog.ShowDialog()
    End Sub

    Private Sub PrintPage(sender As Object, e As System.Drawing.Printing.PrintPageEventArgs)
        Dim rect As Rectangle
        rect = New Rectangle(0, 0, 1000, 800)
        '旋转导致速度慢,不旋转对速度没影响
        e.Graphics.TranslateTransform(0, e.PageSettings.PaperSize.Height)
        e.Graphics.RotateTransform(-90)

        _spread.OwnerPrintDraw(e.Graphics, rect, 0, 1)
    End Sub

End Class

以上是我的所有测试代码,麻烦帮忙看下。现在使用OwnerPrintDraw方法主要是为了实现在一个打印任务中完成多个SheetView打印,有什么其他的方法能实现这个需求吗?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-8-10 11:01:38
7#
fpSpread1.PrintSheet(-1) 是打印所有sheet。
回复 使用道具 举报
631324227
注册会员   /  发表于:2016-8-10 13:00:29
8#
dexteryao 发表于 2016-8-10 11:01
fpSpread1.PrintSheet(-1) 是打印所有sheet。

printSheet(-1)  会有多个打印任务,打印预览也是每个sheetview单独预览的。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-8-10 15:12:10
9#
您可以将需要打印的信息整合到一个sheet中,一起打印。
或者还有个解决方案是输出到pdf文件,然后预览pdf打印。
回复 使用道具 举报
631324227
注册会员   /  发表于:2016-8-11 13:17:38
10#
各个sheet的列的格式都不太一样,难整合到一起,  pdf文件方式应该可以,要看看怎么打印和预览pdf文件。有没帮我看看上面那段代码有什么地方有问题吗?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部