明天的明天 永远的永远 未知的一切 我与你一起承担 ??

是非成败转头空 青山依旧在 几度夕阳红 。。。
  博客园  :: 首页  :: 管理

Spire.XLS打印页面设置教程 C# VB.NET Excel直接打印

Posted on 2022-05-10 10:07  且行且思  阅读(750)  评论(0编辑  收藏  举报
 
 
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim csclsNPOI As New clsNPOI(Application.StartupPath & "\Demo.xls")
        Dim csMemoryStream As MemoryStream = csclsNPOI.GetStream()
        Dim workbook As New Spire.Xls.Workbook()
        workbook.LoadFromStream(csMemoryStream)
        Dim worksheet As Worksheet = workbook.Worksheets(0)
 
 
        '设置打印参数
        With worksheet.PageSetup
            '表示页眉页脚边距是否与页边距对齐。默认值为1
            '.AlignWithMargins = 1
#Region "页面设置"
            '一:页面
            '1.1方向
            '1.1.1纸张横向
            ' .Orientation = PageOrientationType.Landscape
            '1.1.2纸张竖向
            '.Orientation = PageOrientationType.Portrait
            '2:缩放
            '2.1缩放比例(A): between 10% and 400% percent
            ' .Zoom = 80%
            '2.2调整为(F):
            '2.2.1当FitToPagesTall=1  FitToPagesWide=1  将工作表调整为一页
            '2.2.2当FitToPagesTall=0  FitToPagesWide=1  将所有列调整为一页
            '2.2.3当FitToPagesTall=1  FitToPagesWide=0  将所有行调整为一页
            ''调整为(F):页高
            .FitToPagesTall = 0
            ''调整为(F):页宽
            .FitToPagesWide = 1
            '3.纸张大小(Z):
            '3.1设置纸张大小
            .PaperSize = PaperSizeType.PaperA5
            '3.2打印质量(Q):
            '.PrintQuality = 180
            '4起始页码(R):
            ' .FirstPageNumber = 0
            '二、页边距
            '页眉页边距
            '.HeaderMarginInch = 2
            '页脚页边距
            ' .FooterMarginInch = 2
            ''页边距_上
            ' .TopMargin = 0
            ''页边距_下
            ' .BottomMargin = 0
            ''页边距_左
            ' .LeftMargin = 0.1
            ''页边距_右
            ' .RightMargin = 0
            '居中方式   
            '水平(Z)
            '.CenterHorizontally = True
            '垂直(V)
            ' .VResolution = True
            '三、页眉/页脚
            '页眉(A):
            '四、工作表
            '4.1打印区域(A):
            '  .PrintArea = "A1:K35"
            '4.2打印标题
            '左端标题列(C):
            ' .PrintTitleRows = "$1:$2"
            '顶端标题行(R):
            ' .PrintTitleColumns = "$A:$B"
            '4.3打印
            '网格线(G)
            ' .IsPrintGridlines = True
            '行号列标(L)
            ' .IsPrintHeadings = True
            '黑白模式打印
            ' .BlackAndWhite = True
            '批注(M):
            ' .PrintComments = PrintCommentType.InPlace
            '草稿品质(Q)
            ' .Draft = True
            '错误单元格打印为(E):
            '.PrintErrors = PrintErrorsType.NA
            '先列后行(D)
            '.Order = OrderType.DownThenOver
            '先行后列(V)
            ' .Order = OrderType.OverThenDown
#End Region
        End With
        Dim CS As New MemoryStream
        worksheet.SaveToPdf("C:\123.pdf")
        ' GetMX("C:\123.pdf")
        worksheet.SaveToPdfStream(CS)
        Dim printDoc = New Patagames.Pdf.Net.Controls.WinForms.PdfPrintDocument(Patagames.Pdf.Net.PdfDocument.Load(CS))
        printDoc.Print()
    End Sub
 
    Private Sub GetMX(args As String)
        '加载PDF文档
        Dim doc As New PdfDocument()
        doc.LoadFromFile(args)
 
        '获取第一页
        Dim page As PdfPageBase = doc.Pages(0)
        '获取页面宽度和高度
        Dim pointWidth As Single = page.Size.Width
        Dim pointHeight As Single = page.Size.Height
 
        '将度量单位转换为厘米
        Dim unitCvtr As New PdfUnitConvertor()
        Dim centimeterWidth As Single = unitCvtr.ConvertUnits(pointWidth, PdfGraphicsUnit.Point, PdfGraphicsUnit.Centimeter)
        Dim centimeterHeight As Single = unitCvtr.ConvertUnits(pointHeight, PdfGraphicsUnit.Point, PdfGraphicsUnit.Centimeter)
 
        '输出文本文档
        Dim content As New StringBuilder()
        content.AppendLine("该PDF的页面大小为(宽: " + pointWidth + "pt, 高: " + pointHeight + "pt).")
        content.AppendLine("该PDF的页面大小为(宽: " + centimeterWidth + "cm, 高: " + centimeterHeight + "cm.)")
 
        Dim output As [String] = "GetPageSize_out.txt"
 
        'Save them to a txt file
        File.WriteAllText(output, content.ToString())
 
 
    End Sub