我有一个数据表(计算结果),用户应该能够将其导出为不同的格式。我使用 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"
等。这并不能解决问题。
我还尝试保护单元格的 Range
或 excelWorkSheet
。这也不能解决问题。
有人建议通过 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/