我有一个数据表(计算结果),用户应该能够导出到不同的格式。我使用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
答案 0 :(得分:0)
经过一些测试后,很明显我在评论中命名的属性必须设置为false
:
Microsoft.Office.Interop.Excel.Application.ActiveWindow.DisplayFormulas = false;
为什么这会影响导出到其他格式(例如*.pdf
,这一点并不明显,但显然就是这种情况,并设置.DisplayFormulas = false
解决问题。
希望这有助于某人。