Библиотека .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 не будет работать с целью?
Ответы
Ответ 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")