لا يتم تصدير خطوط Excel Sparklines إلى PDF عند استخدام Com Automation

StackOverflow https://stackoverflow.com/questions/4204830

سؤال

أواجه مشكلة في تصدير أوراق Excel برمجيًا تحتوي على خطوط شرارة لتنسيق PDF.

عندما أقوم بتصدير ورقة Excel يدويًا إلى تنسيق PDF باستخدام منشأة تصدير PDF الأصلية من Excel 2010 ، فإن كل شيء يعمل بشكل جيد ، لكن اللحظة التي أقوم بها باستخدام أتمتة COM البسيطة ، يتم تصدير كل شيء إلى PDF باستثناء الخلايا التي تحتوي على خطوط شرارة.

الشيء الغريب هو أنه عندما أقوم بإضافة بعض أشرطة البيانات إلى ورقة Excel ، يتم تصدير خطوط الشرارة بالقرب من أشرطة البيانات فجأة ، لكن تلك الموجودة بعيدًا عن أشرطة البيانات ليست كذلك.

لقد تحققت من هذه المشكلات على أجهزة مختلفة وأنظمة التشغيل. قد يكون هذا مرتبطًا بالسؤال التالي على Stackoverflow.

أنا أستخدم ما يلي ، مستقيم للغاية للأمام ، رمز VB.NET. لقد حاولت اللعب مع الإعدادات والمتغيرات المختلفة ، لكن لا حظ.

Public Class Form1

    Enum XlFixedFormatType
        xlTypePDF = 0
        xlTypeXPS = 1
    End Enum

    Enum XlUpdateLinks
        xlUpdateLinksUserSetting = 1
        xlUpdateLinksNever = 2
        xlUpdateLinksAlways = 3
    End Enum

    Enum XlFixedFormatQuality
        xlQualityStandard = 0
        xlQualityMinimum = 1
    End Enum

    Private Sub buttonConvert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonConvert.Click
        Dim pdf As String = Convert("C:\Sparkline.xlsx")
        Process.Start(pdf)
    End Sub

    Public Function Convert(ByVal fileName As String) As String
        Dim outPutFilename As String, printObject As Object = Nothing
        Dim app As Object      '** In reality this is a Microsoft.Office.Interop.Excel.Application
        Dim doc As Object      '** In reality this is a Microsoft.Office.Interop.Excel.Workbook

        app = CreateObject("Excel.Application")

        '** Open the _document
        doc = app.Workbooks.Open(fileName:=fileName, _
                                   UpdateLinks:=XlUpdateLinks.xlUpdateLinksNever, _
                                   ReadOnly:=True, _
                                   AddToMru:=False, _
                                   IgnoreReadOnlyRecommended:=True, _
                                   CorruptLoad:=True, _
                                   Editable:=False)

        '** Set visible sheets depending on selected range
        printObject = app.ActiveWorkbook.ActiveSheet

        '** Write the file under the same name, but with different extension
        outPutFilename = System.IO.Path.ChangeExtension(fileName, "pdf")

        printObject.ExportAsFixedFormat(Type:=XlFixedFormatType.xlTypePDF, _
                                fileName:=outPutFilename, _
                                quality:=XlFixedFormatQuality.xlQualityStandard, _
                                IncludeDocProperties:=False, _
                                IgnorePrintAreas:=False, _
                                OpenAfterPublish:=False)

        doc.Close(False)
        app.Quit()

        '** Return the name of the converted file
        Return outPutFilename

    End Function

End Class
هل كانت مفيدة؟

المحلول

لقد كنت على اتصال بدعم Microsoft وقد اعترفوا بأنه خطأ. يبحث فريق المنتج في ذلك لإدراجه في حزمة خدمة مستقبلية.

حتى ذلك الحين ، فإن جعل التطبيق مرئيًا قبل تنفيذ التصدير سيحل المشكلة. إذا كنت لا تريد أن يراها المستخدم ، فيمكنك وضع النافذة خارج الشاشة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top