Question

J'ai un problème d'exportation programme feuilles Excel qui contiennent sparklines au format PDF.

Quand exporter manuellement la feuille Excel au format PDF en utilisant l'installation Exportation PDF natif Excel 2010 alors tout fonctionne très bien, mais dès que je le fais en utilisant l'automatisation COM simple, alors tout est exporté au format PDF à l'exception des cellules contenant sparklines.

La chose étrange est que quand j'ajoute quelques barres de données sur la feuille Excel puis les sparklines à proximité des barres de données sont soudainement exportées, mais les plus éloignés des barres de données ne sont pas.

J'ai vérifié ces problèmes sur plusieurs machines différentes et systèmes d'exploitation. Cela peut être lié à la question suivante sur StackOverflow .

J'utilise ce qui suit, très simple, le code VB.NET. Je l'ai essayé de jouer avec les différents paramètres et variables, mais pas de chance.

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
Était-ce utile?

La solution

Je suis en contact avec le support technique Microsoft et ils ont reconnu qu'il est un bug. L'équipe produit examine pour l'inclusion dans un futur service pack.

Jusque-là, ce qui rend l'application visible avant de procéder à l'exportation va résoudre le problème. Si vous ne voulez pas l'utilisateur de voir alors vous pouvez placer la fenêtre de l'écran.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top