c# - ExportAsFixedFormat 中的 NumberFormat 问题

标签 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 都丢失导致 double 长十进制值外,这两者都会产生良好的文档。这不适合客户对数据的汇总。 (颜色和字体保持在 .pdf.xps 中定义。)

我尝试将 .Style.Styles 设置为 "Number" 等。这并不能解决问题。

我还尝试保护单元格的 RangeexcelWorkSheet。这也不能解决问题。

有人建议通过 C# 调用 VBA 宏/子,但在研究之后,我觉得这不是一个非常直接(或稳定)的路径.

我正在通过 Interop.Excel 或其他方式寻求解决此问题的任何帮助。

卢肯

最佳答案

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

目前还不清楚为什么这会影响导出为其他格式,例如 *.pdf,但情况显然如此,设置 .DisplayFormulas = false 解决了这个问题.

希望这对某人有帮助。

关于c# - ExportAsFixedFormat 中的 NumberFormat 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18084878/

相关文章:

ios - 使用 UIKit/Coregraphics 渲染为 PDF 时图像模糊

vb.net - 使用 Interop Excel.Application 从 excel 文件中读取 "date"

c# - 如何遍历 Excel 工作表仅从特定列中提取数据

c# - Monotouch 在使用设备构建时在 LINQ 查询上爆炸

c# - 在 C# 中列出目录中的大量文件

c# - Richtextbox 到 iTextSharp

c - 用于利基文本打印的简单文件格式

F# Excel Range.Sort 失败或重新排列列

c# - 为我的类实现 IEnumerable 接口(interface)

c# - 单击列表框中的按钮时选择列表框中的行