Frage

ich habe ein Problem programmatisch Excel-Tabellen exportieren, die Sparklines in PDF-Format enthalten.

Wenn ich manuell das Excel-Sheet in PDF-Format exportieren mit Excel 2010 nativen PDF exportieren Anlage dann funktioniert alles gut, aber der Moment, als ich es einfach COM-Automatisierung tun dann alles in PDF mit Ausnahme von Zellen enthält, Spark exportiert wird.

Die seltsame Sache ist, dass, wenn ich ein paar Datenbalken in die Excel-Tabelle hinzufügen, dann die Sparklines in der Nähe der Datenbalken sind plötzlich exportiert, aber die, die weiter weg von den Datenbalken sind es nicht.

Ich habe diese Probleme auf mehreren verschiedenen Rechnern und Betriebssystemen überprüft. Dies kann auf die folgende Frage bezogen werden auf Stackoverflow.

Ich bin mit dem folgenden, sehr direkt, VB.NET-Code. Ich habe versucht, mit den verschiedenen Einstellungen herumgespielt und Variablen, aber kein Glück.

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
War es hilfreich?

Lösung

Ich habe in Kontakt mit Microsoft Support gewesen, und sie haben erkannt, es ein Fehler ist. Das Produktteam wird in einem zukünftigen Service Pack es für die Aufnahme an.

Bis dahin, so dass die Anwendung sichtbar, bevor Sie den Export Durchführung wird das Problem lösen. Wenn Sie nicht möchten, dass der Benutzer es sehen, dann können Sie das Fenster außerhalb des Bildschirms positioniert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top