ExportAsFixedFormat中的NumberFormat问题

时间:2013-08-06 15:52:48

标签: c# pdf-generation excel-interop xlsx xps-generation

我有一个数据表(计算结果),用户应该能够导出到不同的格式。我使用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

我还想让用户可以从应用程序将此表格导出到 .pdf .xps ,而无需打开Excel文件。正如我在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或以其他方式解决此问题的任何帮助。

LUCN

1 个答案:

答案 0 :(得分:0)

经过一些测试后,很明显我在评论中命名的属性必须设置为falseMicrosoft.Office.Interop.Excel.Application.ActiveWindow.DisplayFormulas = false;

为什么这会影响导出到其他格式(例如*.pdf,这一点并不明显,但显然就是这种情况,并设置.DisplayFormulas = false解决问题。

希望这有助于某人。