【问题标题】:Issue with NumberFormat in ExportAsFixedFormatExportAsFixedFormat 中的 NumberFormat 问题
【发布时间】: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"等。这并不能解决问题。

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

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

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

卢克恩

【问题讨论】:

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


    【解决方案1】:

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

    目前尚不清楚为什么这会影响导出到其他格式(例如 *.pdf),但这显然是这种情况,设置 .DisplayFormulas = false 可以解决问题。

    希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-03-26
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      相关资源
      最近更新 更多