2

我有一个数据表(计算结果),用户应该能够导出为不同的格式。我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.Stylesto"Number"等。这并不能解决问题。

我也尝试过保护Range细胞或excelWorkSheet. 这也不能解决问题。

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

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

朗讯

4

1 回答 1

0

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

目前尚不清楚为什么这会影响到其他格式的导出,*.pdf但显然情况确实如此,并且设置.DisplayFormulas = false解决了问题。

希望这可以帮助某人。

于 2014-02-14T10:33:44.657 回答