Вопросы-Ответы

Как исправить исключение System.StackOverFlowException в Workbook.CalculateFormula?

Иногда пользователи сталкиваются с System.StackOverFlowException в методе Workbook.CalculateFormula. Это исключение обычно возникает из-за того, что размер стека IIS по умолчанию слишком мал (только 265 КБ). Вы можете исправить эту ошибку, создав еще один поток с увеличенным размером стека, а затем переместив в него код, связанный с Workbook.CalculateFormula.

Проблема с толщиной линий при рендеринге Excel в PDF

Иногда, когда файл Excel преобразуется в PDF, толщина линий в выводе PDF отличается. Эта проблема не вызвана Aspose.Cells. Она вызванаAdobe Reader когда его настройки**«Гладкая линия искусства»** и**«Усиление тонких линий»** проверяются. Снятие флажка с этих опций отобразит PDF в порядке.

Если проверить**«Гладкая линия искусства»** и**«Усиление тонких линий»**, толщина линий разная. См. следующие шаги, как это делается:

  • Перейти кРедактировать
  • ВыбиратьНастройки
  • вОтображение страницы Категория Проверить**«Гладкая линия искусства»** и**«Усиление тонких линий»**

Если снять флажок**«Гладкая линия искусства»** и**«Усиление тонких линий»**, толщина линий одинакова. Для этого просто выполните следующие шаги:

  • Перейти кРедактировать
  • ВыбиратьНастройки
  • вОтображение страницы Категория Снимите флажок**«Гладкая линия искусства»** и**«Усиление тонких линий»**

Как исправить исключение System.OutOfMemoryException при загрузке больших электронных таблиц?

Есть большая вероятность, что конструктор Workbook может вызвать исключение System.OutOfMemoryException при загрузке больших электронных таблиц. Это исключение говорит о том, что доступной памяти недостаточно для полной загрузки электронной таблицы в память, поэтому электронную таблицу необходимо загрузить, включивНастройки памяти.

Aspose.Cells API-интерфейсы предоставляют настройки памяти для оптимизации потребления памяти при загрузке и обработке электронных таблиц. Эти параметры также полезны для эффективной загрузки больших электронных таблиц, содержащих огромные наборы данных, в объект Workbook, как показано ниже.

Определите, какой размер стека необходим для определенной книги

Несмотря на то, что мы улучшили механизм вычисления формул Aspose.Cells, и в большинстве случаев вы сможете успешно вычислить все формулы для данного файла шаблона, не указывая меньший размер стека. Но, тем не менее, иногда StackOverFlowException для метода Workbook.CalculateFormula может быть неизбежным. Мы предоставляем пользователям новые API для отслеживания расчетов по формуле. Мы добавили класс с именем «AbstractCalculationMonitor» и предоставили свойство, т. е.CalculationOptions.CalculationMonitorчтобы справиться/отследить проблему.

Пользователи могут самостоятельно отслеживать размер стека с помощью API. Обратите внимание, что проверка стека для каждой ячейки, безусловно, приведет к еще большему снижению производительности. См. пример сегмента кода для справки:

     общедоступный класс MyCalculationMonitor: AbstractCalculationMonitor      { ``public override void BeforeCalculate(int sheetIndex, int rowIndex, int colIndex) { if(new StackTrace(false).FrameCount > 2000) { выбросить новое исключение( Остановить вычисление формулы из-за риска StackOverflowException"); } }