Парсер файлов .NET Excel - PullRequest
2 голосов
/ 28 мая 2010

Таким образом, компания, в которой я работаю, ищет способ проверить, является ли данный файл .xls / .xlsx действительным. Что означает проверку столбцов и строк и других данных. Он заставляет меня оценить GrapeCity Spread и SpreadsheetGear, но мне интересно, есть ли у кого-нибудь еще какие-либо предложения о внешних инструментах, чтобы проверить.

Нам не нужны средства для экспорта файлов .xls или чего-либо в этом роде, просто возможность импортировать их и убедиться, что они действительны на основе набора критериев, которые я создал.

Спасибо.

Ответы [ 7 ]

2 голосов
/ 28 мая 2010

Если вам нужно просто сравнить значения ячеек, вы можете использовать драйвер ADO.NET, для всего остального потребуется Excel или сторонний компонент. Я использую SpreadsheetGear. Когда я оценивал этот компонент 3 года назад, я обнаружил проблему с условным форматированием ячейки с абсолютной ссылкой, но проблема была быстро решена. У них есть ответ поддержки в тот же день.

2 голосов
/ 28 мая 2010

На мой взгляд, самый простой способ справиться с этим - использовать поставщик данных ODBC Excel. Я считаю, что работать с ними проще, чем с PIA.

// Connection string for Excel 2007 (.xlsx)
string dbConnStr = @"Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dsn=Excel Files;dbq=C:\temp\mySpreadsheet.xlsx";
// Connection string for Excel 98-2003 (.xls)
//string dbConnStr = @"Driver={Microsoft Excel Driver (*.xls)};driverid=790;dbq=C:\temp\mySpreadsheet.xls;defaultdir=c:\temp";

OdbcCommand cmd = new OdbcCommand("Select * from [SheetName$]", new OdbcConnection(dbConnStr));

cmd.Connection.Open();

OdbcDataReader dr = cmd.ExecuteReader();

foreach (System.Data.IDataRecord item in dr)
{
    // Check specific column values, etc
    string id = item["Column Name"].ToString();
}
2 голосов
/ 28 мая 2010

Вы можете использовать библиотеку Microsoft.Office.Interop.Excel для доступа к любой книге так же, как в Excel VBA.

Код выглядит так:

using Excel = Microsoft.Office.Interop.Excel;

Excel.Application excel = new Excel.Application();
Excel.Workbook workbook = excel.Workbooks.Open("datasheet.xls");
Excel.Worksheet worksheet = workbook["Sheet1"] as Excel.Worksheet;

string someData = (worksheet.Range["A2"] as Excel.Range).Value.ToString();

worksheet = null;
workbook.Close();
excel.Quit();
1 голос
/ 28 мая 2010

В зависимости от вашего бюджета библиотеки Aspose великолепны. Не дешево, но работает очень и очень хорошо.

0 голосов
/ 28 мая 2010

Возможно, проект NPOI может быть полезен (хотя я никогда не использовал его).

Лучший * * 1005

0 голосов
/ 28 мая 2010

вы можете использовать oleDb от Microsoft для доступа к данным Excel, как и к любой другой системе баз данных. Вы можете получить правильную строку подключения из строки подключения

0 голосов
/ 28 мая 2010

Проверьте Excel Data Reader на CodePlex . Я использовал это несколько раз, и это хорошо работает.

Имейте в виду, однако, что при чтении ячеек .xlsx пропускаются ячейки. Примените этот патч Я отправил для v2.0.1.0, чтобы исправить проблему. (Сопровождающие проекта не кажутся активными, и у меня возникли проблемы с ними.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...