создать Создайте файл Excel(.XLS и.XLSX) с C#




excellibrary google (20)

OpenXML также является хорошей альтернативой, которая помогает избежать установки MS Excel на сервере. Open XML SDK 2.0, предоставляемый Microsoft, упрощает задачу управления пакетами Open XML и базовыми элементами схемы Open XML в пакете. Интерфейс программирования API Open XML (API) инкапсулирует многие общие задачи, которые разработчики выполняют в пакетах Open XML.

Проверьте это OpenXML: Альтернатива, которая помогает избежать установки MS Excel на сервере

https://code.i-harness.com

Как создать таблицу Excel с помощью C #, не требуя установки Excel на компьютере, на котором выполняется код?


А как насчет использования Open XML SDK 2.0 для Microsoft Office?

Несколько преимуществ:

  • Не требуется установка Office
  • Сделано Microsoft = достойная документация MSDN
  • Только одна .Net dll для использования в проекте
  • SDK поставляется со многими инструментами, такими как diff, validator и т. Д.

Ссылки:


Вот как это сделать с LINQ to XML, в комплекте с примером кода:

Быстрое импортирование и экспорт данных Excel с помощью LINQ to XML

Это немного сложно, поскольку вам нужно импортировать пространства имен и т. Д., Но это позволяет вам избежать любых внешних зависимостей.

(Кроме того, конечно, это VB .NET, а не C #, но вы всегда можете изолировать материал VB .NET в своем собственном проекте, чтобы использовать XML-литералы и делать все остальное на C #.)


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

Вы можете быть впечатлены, если вы их не пробовали.

Пожалуйста, будьте предупреждены о stance Microsoft по этому вопросу:

Microsoft в настоящее время не рекомендует и не поддерживает автоматизацию приложений Microsoft Office от любого бездействия, неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может проявлять нестабильное поведение и / или тупиковой ситуации, когда Office запущен в этой среде.


Вы можете взглянуть на GemBox.Spreadsheet .

У них есть бесплатная версия со всеми функциями, но она ограничена до 150 строк на лист и 5 листов на книгу, если это подпадает под ваши потребности.

Мне еще не нужно было его использовать, но это интересно.


Вы можете использовать ExcelXmlWriter .

Он работает нормально.


Вы можете использовать библиотеку под названием ExcelLibrary. Это бесплатная библиотека с открытым исходным кодом, размещенная в Google Code:

ExcelLibrary

Это выглядит как порт PHP ExcelWriter, о котором вы говорили выше. Он не будет писать в новый формат .xlsx, но они работают над добавлением этой функции.

Это очень просто, мало и легко использовать. Кроме того, у него есть DataSetHelper, который позволяет вам использовать DataSets и DataTables для простой работы с данными Excel.

ExcelLibrary, похоже, работает только для более старого формата Excel (файлы .xls), но может добавить поддержку в будущем для новых форматов 2007/2010.

Вы также можете использовать EPPlus , который работает только для файлов формата Excel 2007/2010 (файлы .xlsx).

В каждой библиотеке есть несколько известных ошибок, как указано в комментариях. В целом, EPPlus, кажется, лучший выбор по прошествии времени. Он, кажется, более активно обновляется и документируется.

Кроме того, как отметил @ АртёмЦарионов ниже, EPPlus поддерживает сводные таблицы, а ExcelLibrary может иметь некоторую поддержку ( проблема сводной таблицы в ExcelLibrary )

Вот несколько ссылок для быстрой справки:
ExcelLibrary - GNU Lesser GPL
EPPlus - GNU Lesser General Public License (LGPL)

Вот пример кода для ExcelLibrary:

Вот пример, берущий данные из базы данных и создающие из нее книгу. Обратите внимание, что код ExcelLibrary является единственной строкой внизу:

//Create the data set and table
DataSet ds = new DataSet("New_DataSet");
DataTable dt = new DataTable("New_DataTable");

//Set the locale for each
ds.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;
dt.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;

//Open a DB connection (in this example with OleDB)
OleDbConnection con = new OleDbConnection(dbConnectionString);
con.Open();

//Create a query and fill the data table with the data from the DB
string sql = "SELECT Whatever FROM MyDBTable;";
OleDbCommand cmd = new OleDbCommand(sql, con);
OleDbDataAdapter adptr = new OleDbDataAdapter();

adptr.SelectCommand = cmd;
adptr.Fill(dt);
con.Close();

//Add the table to the data set
ds.Tables.Add(dt);

//Here's the easy part. Create the Excel worksheet from the data set
ExcelLibrary.DataSetHelper.CreateWorkbook("MyExcelFile.xls", ds);

Создание файла Excel так же просто. Вы также можете вручную создавать файлы Excel, но приведенная выше функциональность меня впечатлила.



Если вы довольны xlsx-форматом, попробуйте проект Codeplex GitHub. EPPlus . Начал его с источника из ExcelPackage, но сегодня это полная переписывание. Поддерживает диапазоны, стили ячейки, диаграммы, фигуры, рисунки, namesranges, автофильтр и многое другое.


Если вы создаете файлы Excel 2007/2010, попробуйте этот проект с открытым исходным кодом: https://github.com/closedxml/closedxml

Он обеспечивает объектно-ориентированный способ манипулирования файлами (аналогично VBA), не имея дело с проблемами XML-документов. Он может использоваться любым языком .NET, таким как C # и Visual Basic (VB).

ClosedXML позволяет создавать файлы Excel 2007/2010 без приложения Excel. Типичным примером является создание отчетов Excel на веб-сервере:

var workbook = new XLWorkbook();
var worksheet = workbook.Worksheets.Add("Sample Sheet");
worksheet.Cell("A1").Value = "Hello World!";
workbook.SaveAs("HelloWorld.xlsx");


Некоторые сторонние поставщики компонентов, такие как Infragistics или Syncfusion, обеспечивают очень хорошие возможности экспорта Excel, которые не требуют установки Microsoft Excel.

Поскольку эти поставщики также предоставляют расширенные компоненты сетки пользовательского интерфейса, эти компоненты особенно удобны, если вы хотите, чтобы стиль и макет экспорта excel имитировали текущее состояние сетки в пользовательском интерфейсе вашего приложения.

Если ваш экспорт предназначен для выполнения на стороне сервера с акцентом на экспортируемые данные и без ссылки на пользовательский интерфейс, я бы воспользовался одним из бесплатных вариантов с открытым исходным кодом (например, ExcelLibrary).

Ранее я занимался проектами, которые пытались использовать автоматизацию на стороне сервера в пакете Microsoft Office. Исходя из этого опыта, я бы настоятельно рекомендовал против такого подхода.


Очень легкий вариант может заключаться в использовании таблиц HTML. Просто создайте теги head, body и table в файле и сохраните его как файл с расширением .xls. Существуют специальные атрибуты Microsoft, которые можно использовать для создания вывода, включая формулы.

Я понимаю, что вы не можете кодировать это в веб-приложении, но вот example композиции файла Excel через таблицу HTML. Этот метод можно использовать, если вы кодировали консольное приложение, настольное приложение или службу.



Различные библиотеки библиотек Office 2003 доступны для небольших файлов excel. Тем не менее, я считаю, что размер большой книги, сохраненной в формате XML, является проблемой. Например, рабочая книга, с которой я работаю, будет 40 МБ в новом (и, по общему признанию, более плотно упакованном) формате XLSX, станет файлом формата 360 МБ.

Что касается моих исследований, у меня есть два коммерческих пакета, которые позволяют выводить старые форматы двоичных файлов. Они есть:

Не дешево (500USD и 800USD соответственно, я думаю). но обе работают независимо от самого Excel.

Что мне будет интересно, так это модуль вывода Excel для подобных OpenOffice.org. Интересно, можно ли их портировать с Java на .Net.


Самый простой и быстрый способ создания файла Excel из C # - использовать инструмент производительности Open XML. Инструмент производительности Open XML поставляется с установкой Open XML SDK. Инструмент реверсирует любой файл Excel в код C #. Затем код C # можно использовать для повторного создания этого файла.

Обзор процесса:

  1. Установите SDK Open XML с помощью инструмента.
  2. Создайте файл Excel, используя последний клиент Excel с желаемым внешним видом. Назовите его DesiredLook.xlsx .
  3. С помощью инструмента откройте DesiredLook.xlsx и нажмите кнопку Reflect Code рядом с верхней.
  4. Код C # для вашего файла будет создан в правой панели инструмента. Добавьте это в свое решение C # и создайте файлы с этим желаемым внешним видом.

В качестве бонуса этот метод работает для любых файлов Word и PowerPoint. Будучи разработчиком C #, вы вносите изменения в код в соответствии с вашими потребностями.

Я разработал простое приложение WPF для github, которое будет работать в Windows для этой цели. Существует класс-заполнитель под названием GeneratedClass который вы можете вставить сгенерированный код. Если вы вернетесь к одной версии файла, она будет генерировать файл excel следующим образом:


Я недавно использовал FlexCel.NET и нашел отличную библиотеку! Я не говорю о слишком многих программных продуктах. Не стоит указывать здесь весь объем продаж, вы можете прочитать все функции на своем веб-сайте.

Это коммерческий продукт, но вы получаете полный источник, если вы его купите. Поэтому, я полагаю, вы могли бы скомпилировать его в свою сборку, если хотите. В противном случае это всего лишь одна дополнительная сборка для xcopy - без конфигурации или установки или чего-либо подобного.

Я не думаю, что вы найдете какой-либо способ сделать это без сторонних библиотек, поскольку .NET framework, очевидно, не поддерживает его, а OLE Automation - всего лишь целый мир боли.


Я согласен с созданием XML-таблиц, вот пример того, как это сделать для C # 3 (все просто блоги об этом в VB 9: P) http://www.aaron-powell.com/linq-to-xml-to-excel


IKVM + POI

Или вы можете использовать Interop ...


Syncfusion Essential XlsIO может это сделать. Он не зависит от офиса Microsoft, а также имеет определенную поддержку для разных платформ.

Пример кода:

//Creates a new instance for ExcelEngine.
ExcelEngine excelEngine = new ExcelEngine();
//Loads or open an existing workbook through Open method of IWorkbooks
IWorkbook workbook = excelEngine.Excel.Workbooks.Open(fileName);
//To-Do some manipulation|
//To-Do some manipulation
//Set the version of the workbook.
workbook.Version = ExcelVersion.Excel2013;
//Save the workbook in file system as xlsx format
workbook.SaveAs(outputFileName);

Весь набор средств управления предоставляется бесплатно через лицензионную программу сообщества, если вы имеете право на получение дохода (менее 1 миллиона долларов США). Примечание. Я работаю в Syncfusion.







file-io