我正在使用 Interop.Excel 将 excel (xlsx)(2010) 转换为 PDF 以用于应用程序。在我的开发机器上它工作正常并且图像显示正确。但是,在服务器上,当 Excel 转换为 PDF 时,图像(一些通过代码插入,另一些在模板文档中插入)不会显示在 PDF 中。 excel文件查看起来没问题。这是我用来转换为 PDF 的代码:
Public Shared Function FromExcel(ByVal ExcelFileLocation As String, ByVal PDFFileLocation As String) As Boolean
' Load the new Excel file
' http://msdn.microsoft.com/en-us/library/bb407651(v=office.12).aspx
Dim excelApplication As ApplicationClass = New ApplicationClass()
Dim excelWorkbook As Workbook = Nothing
Dim paramExportFormat As XlFixedFormatType = XlFixedFormatType.xlTypePDF
Dim paramExportQuality As XlFixedFormatQuality = XlFixedFormatQuality.xlQualityStandard
Dim paramOpenAfterPublish As Boolean = False
Dim paramIncludeDocProps As Boolean = True
Dim paramIgnorePrintAreas As Boolean = True
Dim paramFromPage As Object = Type.Missing
Dim paramToPage As Object = Type.Missing
Try
' Open the source workbook.
excelWorkbook = excelApplication.Workbooks.Open(ExcelFileLocation)
' Save it in the target format.
If Not excelWorkbook Is Nothing Then
excelWorkbook.ExportAsFixedFormat(paramExportFormat, _
PDFFileLocation, paramExportQuality, _
paramIncludeDocProps, paramIgnorePrintAreas, _
paramFromPage, paramToPage, paramOpenAfterPublish)
Return True
Else
Return False
End If
Catch ex As Exception
Return False
Finally
' Close the workbook object.
If Not excelWorkbook Is Nothing Then
excelWorkbook.Close(False)
excelWorkbook = Nothing
End If
' Quit Excel and release the ApplicationClass object.
If Not excelApplication Is Nothing Then
excelApplication.Quit()
excelApplication = Nothing
End If
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()
End Try
End Function
这是 PDF 转换后的屏幕截图。http://it.hlbsolutions.com/uploads/Untitled-1.jpg http://it.hlbsolutions.com/uploads/Untitled-1.jpg
请注意顶部和右下角的图像没有显示。任何想法都会有帮助。
Thanks
在填充单元格和更改单选按钮时,我遇到了类似的问题 - 所有图像都会消失。
通过将服务帐户切换为,我能够使图像不被删除本地系统而不是我最初选择的“本地服务”。
更多详细信息请参见this SO question。 https://stackoverflow.com/a/8885187/41153
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)