Каков наилучший способ экспорта DataTable в файл Excel? - PullRequest
0 голосов
/ 14 июля 2010

Насколько я знаю, есть 3 способа сделать это:

  • Первый способ - использование COM Interop для создания файла Excel, а затем перебор всех ячеек для чтения и записи данных.,Созданный файл, кажется, является действительным (истинный файл .XLS), но кажется, что Excel должен быть установлен, чтобы использовать этот способ
  • Второй способ - написать заголовок файла (стиль CSS), а затем выполнить итерацию по всем ячейкам, тоже.Этот способ не требует установки Excel, но созданный файл может быть недействительным (на самом деле это HTML-файл)
  • Третий способ - заполнить DataTable в DataGrid, а затем отобразить его в HTML-файл,затем переименуйте его в расширение .xls.

Третий способ кажется самым простым, но я не знаю, есть ли лучший способ архивировать это?Если нет, то какой из этих трех способов лучший?

Большое вам спасибо.

Ответы [ 3 ]

1 голос
/ 14 июля 2010

Самый простой способ: CSV. Просто ToString () для каждого значения каждого DataRow и поместите его в файл. Вы также можете удалить имена столбцов в качестве первой строки в файле. CSV-файлы легко импортируются в Excel.

Мой альтернативный вариант - экспортировать в xslx, используя один из многочисленных проектов на Codeplex. Я играл с ExcelPackage и Simple OOXML , оба из которых (IIRC) работают нормально.

Вы можете узнать больше, выполнив поиск по Excel или OOXML в Codeplex.

1 голос
/ 14 июля 2010

Четвертым способом будет использование OleDbConnection и подключение вашего приложения .NET к Excel с использованием стандартного ADO.NET.

Я должен был сделать нечто подобное несколько лет назад, и эта статья была очень полезной.

http://davidhayden.com/blog/dave/archive/2006/05/26/2973.aspx

В этом подходе есть много странных вещей (в основном это ссылки на таблицы и диапазоны), но в итоге он становится просто реализацией ADO.NET и выглядит очень похоже на обычный проект ADO.NET.

Надеюсь, это поможет!

0 голосов
/ 14 июля 2010

Будьте осторожны с записью в CSV, поскольку Excel автоматически конвертирует типы данных. Например, 0001 будет преобразовано в число 1.

Другой вариант - использовать DataTable.WriteXML (имя файла) и установить для имени файла значение something.xls

.

Это не бинарный файл XLS, но также должен открываться в Excel.

Кстати: подход таблиц HTML лучше, если вам нужно форматирование, и оба эти подхода могут быть очень медленными для больших таблиц.

...