Domanda

Sto avendo un problema di programmazione esportare fogli Excel che contengono sparkline in formato PDF.

Quando ho esportare manualmente il foglio di Excel in formato PDF utilizzando nativo impianto esportazione PDF Excel 2010 quindi tutto funziona bene, ma il momento lo faccio utilizzando semplici automazione COM poi tutto viene esportato in formato PDF con l'eccezione di cellule contenenti sparkline.

La cosa strana è che quando aggiungo un paio di bar di dati al foglio di excel poi i sparkline vicino le barre dei dati vengono esportati all'improvviso, ma quelli più lontani dai bar di dati non sono.

Ho verificato questi problemi su più macchine diverse e sistemi operativi. Questo può essere correlato alla seguente domanda sulla StackOverflow .

Sto usando il seguente, molto semplice, il codice VB.NET. Ho provato a giocare con le varie impostazioni e le variabili, ma senza fortuna.

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
È stato utile?

Soluzione

Sono stato in contatto con il supporto tecnico Microsoft e hanno riconosciuto che è un bug. Il team di prodotto sta guardando per l'inclusione in un futuro servizio pacchetto.

Fino ad allora, rendere visibile l'applicazione prima di effettuare l'esportazione risolverà il problema. Se non si desidera che l'utente vede quindi è possibile posizionare la finestra fuori dallo schermo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top