Библиотека .NET Excel, которая может читать / записывать xls-файлы [закрыто]
-
27-10-2019 - |
Вопрос
Я ищу библиотеку Excel, которая читает / записывает файлы .xls (не .xlsx).
Я использую превосходная библиотека но это очень глючит, и я кажется, я не могу открыть файлы, которые я создаю.Проблема была известна почти год назад и до сих пор не устранена.
Я видел в другой теме, как кто-то предложил ЭППлус, но это работает только с форматом 2007/2010 .xlsx.
Я использовал Кугра в прошлом я был вполне доволен этим, но я считаю, что это можно только читать...не писать.
Если вы знаете о библиотеке, пожалуйста, дайте мне знать, как она называется.
Редактировать:Я очень рад создать свой файл Excel с помощью встроенной программы Microsoft.Офис.Взаимодействие.При необходимости используйте Excel, однако на моем компьютере установлен Office 2007, а на целевых компьютерах - только Office 2003.Я заметил, что у меня есть 2 версии файлов для этой библиотеки:12, и 14.Я проверил версию Excel на целевых компьютерах, и это 11.8169.8172 - я предполагаю, что встроенное взаимодействие с Excel не будет работать на цели?
Решение
Я бы порекомендовал NPOI.NPOI - это Бесплатно и работает исключительно с файлами .XLS.Это мне очень помогло.
Деталь:вам не нужно устанавливать Microsoft Office на вашем компьютере для работы с файлами .XLS, если вы используете NPOI.
Проверьте эти записи в блоге:
Создание электронных таблиц Excel .XLS и .XLSX на C#
NPOI с таблицей Excel и динамической диаграммой
[ОБНОВЛЕНИЕ]
NPOI 2.0 добавил поддержку XLSX и DOCX.
Подробнее об этом вы можете прочитать здесь:
Другие советы
Есть ли причина, по которой вы не можете использовать подключение Excel ODBC для чтения и записи для 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, даже если у вас есть только более высокая версия на вашем ПК.
Вы можете рассмотреть сторонний инструмент, который назывался Excel Jetcell .net Component Для чтения/записи файлов Excel:
C# образец
// 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")