لا يتم تصدير خطوط Excel Sparklines إلى PDF عند استخدام Com Automation
-
25-09-2019 - |
سؤال
أواجه مشكلة في تصدير أوراق Excel برمجيًا تحتوي على خطوط شرارة لتنسيق PDF.
عندما أقوم بتصدير ورقة Excel يدويًا إلى تنسيق PDF باستخدام منشأة تصدير PDF الأصلية من Excel 2010 ، فإن كل شيء يعمل بشكل جيد ، لكن اللحظة التي أقوم بها باستخدام أتمتة COM البسيطة ، يتم تصدير كل شيء إلى PDF باستثناء الخلايا التي تحتوي على خطوط شرارة.
الشيء الغريب هو أنه عندما أقوم بإضافة بعض أشرطة البيانات إلى ورقة Excel ، يتم تصدير خطوط الشرارة بالقرب من أشرطة البيانات فجأة ، لكن تلك الموجودة بعيدًا عن أشرطة البيانات ليست كذلك.
لقد تحققت من هذه المشكلات على أجهزة مختلفة وأنظمة التشغيل. قد يكون هذا مرتبطًا بالسؤال التالي على Stackoverflow.
أنا أستخدم ما يلي ، مستقيم للغاية للأمام ، رمز 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 وقد اعترفوا بأنه خطأ. يبحث فريق المنتج في ذلك لإدراجه في حزمة خدمة مستقبلية.
حتى ذلك الحين ، فإن جعل التطبيق مرئيًا قبل تنفيذ التصدير سيحل المشكلة. إذا كنت لا تريد أن يراها المستخدم ، فيمكنك وضع النافذة خارج الشاشة.