Pregunta

Estoy teniendo un problema exportar mediante programación hojas de Excel que contienen sparklines a formato PDF.

Cuando la exportación manualmente la hoja de Excel a formato PDF utilizando las instalaciones Exportación de PDF nativo de Excel 2010 entonces todo funciona bien, pero en el momento que lo hago usando sencilla automatización COM entonces todo se exporta a PDF con la excepción de las células que contienen sparklines.

Lo extraño es que cuando agrego un par de barras de datos a la hoja de Excel a continuación, los minigráficos cerca de las barras de datos se exportan repente, pero los más alejados de las barras de datos no lo son.

Me han verificado estos problemas en varios equipos diferentes y sistemas operativos. Esto puede estar relacionado con la siguiente pregunta en Stackoverflow .

Estoy utilizando el siguiente, muy sencillo, código VB.NET. He tratado de jugar con los diferentes ajustes y variables, pero sin suerte.

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
¿Fue útil?

Solución

he estado en contacto con el soporte técnico de Microsoft y han reconocido que es un error. El equipo de producto está mirando para su inclusión en un futuro servicio paquete.

Hasta entonces, haciendo que la aplicación visible antes de llevar a cabo la exportación va a resolver el problema. Si no desea que el usuario vea que a continuación se puede colocar la ventana fuera de la pantalla.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top