Как создать файл Excel (.XLS и .XLSX) в C # без установки Microsoft Office? [закрыто]

  • http: // - Протокол
  • www - Имя сервера (субдомен)
  • пример - Домен второго уровня (SLD)
  • com - домен верхнего уровня (TLD)
  • 9090 - номер порта
  • /test.html - путь

Сохраните протокол, вы можете обратиться к «www.example.com» как имя хоста или, более конкретно, «полное доменное имя».

Бросьте в «9090», и лично мне будет удобно называть его хозяином, так как обычно это то, что вы получите в качестве заголовка «хоста» в HTTP-запросе; что-то вроде «host: www.example.com:9090». В PHP он будет храниться в переменной $_SERVER в разделе «HTTP_HOST» или «SERVER_NAME». В JavaScript он будет доступен как document.location.host.

Я не знаю, как вы могли бы его называть, как только вы подбрасываете «http: //»: (

1760
задан 13 revs, 8 users 36% 2 July 2019 в 22:02
поделиться

22 ответа

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

ExcelLibrary

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

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

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

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

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

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

Вот пара ссылок для быстрого ознакомления:
ExcelLibrary - GNU Lesser GPL
EPPlus - Малая стандартная общественная лицензия GNU (LGPL)
NPOI - Лицензия Apache

Вот некоторые пример кода для 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, но меня действительно впечатлила вышеуказанная функциональность.

1010
ответ дан 22 November 2019 в 20:06
поделиться

IKVM + ПОИ

Или, Вы могли использовать Interop...

12
ответ дан MagicKat 2 July 2019 в 22:02
поделиться

Решение с открытым исходным кодом Java ПОИ Apache . Возможно, существует способ установить interop здесь, но я не знаю достаточно о Java для ответа на это.

, Когда я исследовал эту проблему, я закончил тем, что использовал блоки Interop.

7
ответ дан 2 revs, 2 users 91% 2 July 2019 в 22:02
поделиться

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

Quickly Import и Export Данные Excel с LINQ к XML

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

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

12
ответ дан 2 revs 2 July 2019 в 22:02
поделиться

Можно использовать OLEDB, чтобы создать и управлять файлами Excel. Проверьте это: Reading и Writing Excel с помощью OLEDB.

Типичный пример:

using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\temp\\test.xls;Extended Properties='Excel 8.0;HDR=Yes'"))
{
  conn.Open();
  OleDbCommand cmd = new OleDbCommand("CREATE TABLE [Sheet1] ([Column1] string, [Column2] string)", conn);
  cmd.ExecuteNonQuery();
}

РЕДАКТИРОВАНИЕ - еще Некоторые ссылки:

103
ответ дан 4 revs, 2 users 97% 2 July 2019 в 22:02
поделиться

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

Вы могли бы быть впечатлены, если Вы не судили их.

быть предупрежденным относительно Microsoft позиция на этом:

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

43
ответ дан 3 revs, 2 users 64% 2 July 2019 в 22:02
поделиться

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

14
ответ дан 2 revs 2 July 2019 в 22:02
поделиться

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

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

59
ответ дан 2 revs 2 July 2019 в 22:02
поделиться

Вы могли рассмотреть создание Ваших файлов с помощью электронная таблица XML 2003 формат. Это - простой формат XML с помощью хорошо зарегистрированная схема .

24
ответ дан 2 revs, 2 users 75% 2 July 2019 в 22:02
поделиться

Можно хотеть смотреть на GemBox. Электронная таблица .

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

у меня не было потребности использовать его самого все же, но действительно выглядит интересным.

21
ответ дан 2 revs, 2 users 88% 2 July 2019 в 22:02
поделиться

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

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

Gembox ComponentOne Ни один не является дешевым (500 долларов США и 800 долларов США соответственно, я думаю). но оба работают независимые от самого Excel.

то, На предмет чего мне было бы любопытно, является выходным модулем Excel для подобных OpenOffice.org. Интересно, могут ли они быть портированы от Java до.Net.

16
ответ дан 2 revs, 2 users 96% 2 July 2019 в 22:02
поделиться

Вы когда-либо пробовали sylk?

Мы раньше генерировали excelsheets у классического asp как sylk, и прямо сейчас мы ищем excelgenerater также.

преимущества для sylk, можно отформатировать ячейки.

7
ответ дан Stefan Koelle 2 July 2019 в 22:02
поделиться

Коммерческое решение, SpreadsheetGear для.NET сделает это.

Вы видите живой ASP.NET (C# и VB) образцы здесь и загружаете пробную версию здесь .

Правовая оговорка: Я владею SpreadsheetGear LLC

77
ответ дан 4 revs, 3 users 94% 2 July 2019 в 22:02
поделиться

Можно использовать ExcelXmlWriter.

Это хорошо работает.

47
ответ дан 2 revs, 2 users 55%Petr Snobelt 3 July 2019 в 08:02
поделиться

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

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

я не думаю, что Вы найдете любой способ сделать это без сторонних библиотек, поскольку платформа.NET, очевидно, не имеет созданным в поддержке его, и Автоматизация OLE является просто целым миром боли.

14
ответ дан 2 revs, 2 users 92% 3 July 2019 в 08:02
поделиться
  • 1
    Я уже проверяю, что репозиторием является GitHub repo и it' s хороший думают, что пользователи используют только корректные электронные письма для своих фиксаций. Я can' t используют Граватары потому что партия пользователей don' t граватары использования на GitHub (граватары уже реализованы в моем коде), – Fez Vrasta 8 April 2014 в 20:24

Несколько вариантов, которые я использовал:

Если XLSX необходим: ExcelPackage - хорошее начало, но оно исчезло, когда разработчик прекратил работу над ним. ExML взял оттуда и добавил несколько функций. ExML неплохой вариант, я все еще использую его на нескольких производственных веб-сайтах.

Однако для всех моих новых проектов я использую NPOI , порт .NET для Apache POI . NPOI 2.0 (Alpha) также поддерживает XLSX.

65
ответ дан 22 November 2019 в 20:06
поделиться

Я успешно использовал следующие проекты с открытым исходным кодом:

  • ExcelPackage для форматов OOXML (Office 2007)

  • NPOI для формата .XLS (Office 2003). NPOI 2.0 (Beta) также поддерживает XLSX.

Взгляните на мои сообщения в блоге:

Создание таблиц Excel .XLS и .XLSX на C #

NPOI с таблицей Excel и динамическими диаграммами

167
ответ дан 22 November 2019 в 20:06
поделиться

Некоторые полезные средства автоматизации Excel на C # можно найти по следующей ссылке.

http://csharp.net-informations.com/excel/csharp-excel-tutorial.htm

Болтон.

8
ответ дан 22 November 2019 в 20:06
поделиться

Что ж,

вы также можете использовать стороннюю библиотеку, например Aspose .

Эта библиотека имеет то преимущество, что не требует установки Excel на ваша машина, которая будет идеальной в вашем случае.

17
ответ дан 22 November 2019 в 20:06
поделиться

Если вам нравится формат xlsx, попробуйте мой проект GitHub, EPPlus . Он начался с исходного кода из ExcelPackage, но сегодня он полностью переработан. Он поддерживает диапазоны, стили ячеек, диаграммы, фигуры, изображения, именованные диапазоны, автофильтр и многое другое.

571
ответ дан 22 November 2019 в 20:06
поделиться

Я также голосую за GemBox.Spreadsheet .

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

Я взял на себя задачи по составлению отчетов. совершенно новый уровень скорости выполнения.

5
ответ дан 22 November 2019 в 20:06
поделиться

Вы можете просто записать его в XML, используя формат Excel XML, и назвать его с расширением .XLS, и он откроется в excel. Вы можете контролировать все форматирование (полужирный, ширину и т. Д.) В заголовке XML-файла.

Существует пример XML из Википедии .

6
ответ дан 22 November 2019 в 20:06
поделиться