【发布时间】:2013-08-06 15:52:47
【问题描述】:
我有一个数据表(计算结果),用户应该能够将其导出为不同的格式。我使用Interop.Excel 准备一个包含数据的表格,并使用数据并使用视觉格式(字体、颜色等)和NumberFormat 对其进行格式化。示例:
cellRange.NumberFormat = "#,##0";
当我将表格保存为 Excel 文件时,导出到 .xlsx 和 .xls 时所有格式都可以:
excelWorkBook.SaveAs(exportFileName, Excel.XlFileFormat.xlOpenXMLWorkbook); // for .xlsx
excelWorkBook.SaveAs(exportFileName, Excel.XlFileFormat.xlExcel8); // for .xls
我还想让用户无需打开 Excel 文件就可以将这个表格从应用程序导出为 .pdf 和 .xps。当我准备好Interop.Excel 中的表格时,我尝试将同一个表格导出为这些文件格式:
excelWorkBook.ExportAsFixedFormat(Excel.XlFixedFormatType.xlTypePDF,exportFileName); // for .pdf
excelWorkBook.ExportAsFixedFormat(Excel.XlFixedFormatType.xlTypeXPS,exportFileName); // for .xps
除了所有NumberFormats 都丢失导致双精度长十进制值之外,这两种方法都会产生良好的文档。这不适合客户的数据摘要。 (颜色和字体与 .pdf 和 .xps 中的定义保持一致。)
我尝试将.Style和.Styles设置为"Number"等。这并不能解决问题。
我还尝试保护单元格的Range 或excelWorkSheet。这也解决不了问题。
有人建议通过 C# 调用 VBA 宏/子,但经过一番研究,我觉得这不是一条非常直接(或稳定)的路径.
我正在寻求通过Interop.Excel 或其他方式解决此问题的任何帮助。
卢克恩
【问题讨论】:
标签: c# pdf-generation excel-interop xlsx xps-generation