Pergunta

Estou tendo um problema em exportar programaticamente folhas do Excel que contêm linhas de faíscas para o formato PDF.

Quando exporto manualmente a planilha do Excel para o formato PDF usando o recurso de exportação de PDF nativo do Excel 2010, tudo funciona bem, mas no momento em que faço isso usando a simples automação COM, tudo é exportado para PDF, com exceção das células que contêm linhas de faísca.

O estranho é que, quando adiciono algumas barras de dados à planilha do Excel, as linhas de faíscas próximas às barras de dados são repentinamente exportadas, mas as mais distantes das barras de dados não estão.

Verifiquei esses problemas em várias máquinas e sistemas operacionais diferentes. Isso pode estar relacionado à seguinte pergunta sobre Stackoverflow.

Estou usando o seguinte, muito direto, o código vb.net. Eu tentei brincar com as várias configurações e variáveis, mas sem sorte.

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
Foi útil?

Solução

Estive em contato com o suporte da Microsoft e eles reconheceram que é um bug. A equipe de produtos está olhando para a inclusão em um futuro pacote de serviços.

Até então, tornar o aplicativo visível antes de realizar a exportação resolverá o problema. Se você não deseja que o usuário o veja, poderá posicionar a tela da janela.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top