Подтвердить что ты не робот

Библиотека .NET Excel, которая может читать/записывать файлы .xls

Я ищу библиотеку Excel, которая читает/записывает файлы .xls(not.xlsx).

Я использую excellibrary, но он очень глючит, а я не могут открыть файлы, которые я создаю. Этот вопрос известен почти год и еще не исправлен.

Я видел в другом потоке, кто-то предложил EPPlus, но это работает только с форматом .xlsx 2007/2010.

Я использовал Koogra в прошлом и был очень доволен этим, но я считаю, что он может читать только... не пишите.

Если вы знаете библиотеку, сообщите мне, как она называется.

Изменить: Я очень рад создать файл Excel со встроенным Microsoft.Office.Interop.Excel, если это необходимо, однако моя машина имеет Office 2007, а целевые компьютеры имеют только Office 2003. Я заметил, что у меня есть 2 версии файлов для этой библиотеки: 12 и 14. Я проверил версию Excel на целевых машинах, и это 11.8169.8172. Я предполагаю, что встроенный межсетевой экран Excel не будет работать с целью?

4b9b3361

Ответ 1

Я бы рекомендовал NPOI. NPOI БЕСПЛАТНО и работает исключительно с файлами .XLS. Это очень помогло мне.

Подробно: вам не нужно устанавливать Microsoft Office на ваш компьютер для работы с файлами .XLS, если вы используете NPOI.

Проверьте эти сообщения в блоге:

Создание электронных таблиц Excel.XLS и .XLSX в С#

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

[ОБНОВЛЕНИЕ]

NPOI 2.0 добавила поддержку XLSX и DOCX.

Подробнее об этом можно прочитать здесь:

Планируется количество рядов NPOI 2.0

Ответ 2

Есть ли причина, по которой вы не можете использовать соединение ODBC Excel для чтения и записи в Excel? Например, я использовал следующий код для чтения из файла Excel по строке, как база данных:

private DataTable LoadExcelData(string fileName)
{
  string Connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\";";

  OleDbConnection con = new OleDbConnection(Connection);

  OleDbCommand command = new OleDbCommand();

  DataTable dt = new DataTable(); OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from [Sheet1$] WHERE LastName <> '' ORDER BY LastName, FirstName", con);

  myCommand.Fill(dt);

  Console.WriteLine(dt.Rows.Count);

  return dt;
}

Вы можете написать в базу данных Excel так же. Как вы можете видеть, вы можете выбрать номер версии для использования, чтобы можно было понизить версии Excel для машины с помощью Excel 2003. Фактически, то же самое верно для использования Interop. Вы можете использовать более низкую версию, и она должна работать с Excel 2003, хотя у вас есть только более высокая версия на вашем ПК разработки.

Ответ 3

Вы можете рассмотреть сторонний инструмент, который вызвал компонент Excel Jetcell.NET для чтения/записи файлов excel:

С# sample

// Create New Excel Workbook
ExcelWorkbook Wbook = new ExcelWorkbook();
ExcelCellCollection Cells = Wbook.Worksheets.Add("Sheet1").Cells;

Cells["A1"].Value = "Excel writer example (C#)";
Cells["A1"].Style.Font.Bold = true;
Cells["B1"].Value = "=550 + 5";

// Write Excel XLS file
Wbook.WriteXLS("excel_net.xls");

Пример VB.NET

' Create New Excel Workbook
Dim Wbook As ExcelWorkbook = New ExcelWorkbook()
Dim Cells As ExcelCellCollection = Wbook.Worksheets.Add("Sheet1").Cells

Cells("A1").Value = "Excel writer example (C#)"
Cells("A1").Style.Font.Bold = True
Cells("B1").Value = "=550 + 5"

' Write Excel XLS file
Wbook.WriteXLS("excel_net.xls")