DevExpress exportToXls NullReferenceException - PullRequest
0 голосов
/ 14 мая 2018

Было исключение, когда я использовал DevExpress для экспорта своих данных в файл Excel:

GridControl gridControl2 = new GridControl();
gridControl2.DataSource = exportDataList; // my data list

SaveFileDialog fileDialog = new SaveFileDialog();
fileDialog.Title = "Data Export";
fileDialog.Filter = "Excel (2010) (.xlsx)|*.xlsx|*.xls|*.csv";
DialogResult dialogResult = fileDialog.ShowDialog();
if (dialogResult == DialogResult.OK)
    gridControl2.ExportToXls(fileDialog.FileName);  // NullReferenceException

, но я обновил GridControl раньше, и путь к файлу, я думаю, это нормально, поэтому я не понимаюпочему это исключение произошло, кто-нибудь может мне сказать?спасибо

1 Ответ

0 голосов
/ 14 мая 2018

Насколько я вижу из вашего фрагмента кода, вы создали экземпляр GridControl In-the-Air (без родительских элементов в каком-либо визуальном контейнере).Это не типичное использование для любого элемента управления Windows Forms.В этом случае жизненный цикл Grid (инициализация, создание дескриптора, рисование и т. Д.) Вообще не запускается.
Вы можете принудительно завершить инициализацию элемента управления grid с помощью GridControl.ForceInitialize. вызов метода.После инициализации элемента управления сеткой вы можете безопасно управлять его настройками.

Использование визуального контроля для выполнения задач экспорта / преобразования - это своего рода хитрость.Наиболее предпочтительным решением является использование специальных инструментов экспорта для этой задачи.DevExpress предоставляет Office File API , который представляет собой невизуальную кроссплатформенную библиотеку .NET для обработки документов.Вы можете работать с форматированными текстовыми документами, электронными таблицами или отчетами, рисовать штрих-коды, создавать новые или редактировать существующие документы PDF, преобразовывать различные единицы и сжимать данные непосредственно из кода без каких-либо компонентов пользовательского интерфейса, таких как Grid Control или Spreadsheet.
Таким образом, я предлагаю вам начать отсюда: API документа электронной таблицы> Начало работы

...