Проблема с NumberFormat в ExportAsFixedFormat

У меня есть таблица данных (результаты расчетов), которую пользователь должен иметь возможность экспортировать в разные форматы. я использую 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, Это тоже не решает проблему.

Кто-то предложил вызывать макрос / саб VBA через C#, но после некоторого изучения у меня сложилось впечатление, что это не очень прямой (или стабильный) путь.

Я ищу любую помощь в решении этой проблемы через Interop.Excel или по-другому.

lucn

1 ответ

Решение

После некоторого тестирования становится ясно, что свойство, которое я назвал в своем комментарии, должно быть установлено на false:Microsoft.Office.Interop.Excel.Application.ActiveWindow.DisplayFormulas = false;

Не ясно, почему это влияет на экспорт в другие форматы, такие как *.pdfно это явно так и настройка .DisplayFormulas = false решает проблему.

Надеюсь, это кому-нибудь поможет.

Другие вопросы по тегам