2010-05-28 3 views
2

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

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

Спасибо.

ответ

2

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

1

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

0

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

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

2

Вы можете использовать библиотеку 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

Мы не хотим использовать Interop из-за его слишком медленно, и когда сбой может привести к IIS аварии, а также. – Russak

+0

Метод «OleDbConnection» может быть вашим следующим лучшим вариантом. –

2

На мой взгляд, самый простой способ справиться с этим является использование поставщика данных 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(); 
} 
0

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

0

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

Лучшие