Excel Sparklines не экспортируется в PDF при использовании COM Automation

StackOverflow https://stackoverflow.com/questions/4204830

Вопрос

У меня есть проблема программной экспортировки листов Excel, которые содержат Sparklines в формат PDF.

Когда я вручную экспортирую лист Excel в формат PDF, используя собственный экспортирующий объект экспорта PDF Excel 2010, то все работает нормально, но в тот момент, когда я делаю это, используя простую COM-автоматизацию, то все экспортируется в PDF за исключением клеток, содержащих беркушки.

Странная вещь заключается в том, что когда я добавляю несколько полос данных в лист Excel, то, что искримы рядом с барами данных внезапно экспортируются, но те, которые далее вдали от баров данных не являются.

Я проверил эти проблемы на нескольких разных машинах и операционных системах. Это может быть связано с следующим вопросом на Переполнение стека.

Я использую следующие, очень прямые, код VB.NET. Я пытался играть с различными настройками и переменными, но не повезло.

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
Это было полезно?

Решение

Я был в контакте с поддержкой Microsoft, и они подтвердили, что это ошибка. Команда продукта смотрит на это для включения в будущей пакете обслуживания.

До тех пор, сделав приложение, видимое перед проведением экспорта, решит проблему. Если вы не хотите, чтобы пользователь видел его, вы можете разместить окно выключить экран.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top