Как прочитать файл Excel, где офис не установлен (C # 3.0, dotnet 3.5) - PullRequest
0 голосов
/ 25 июня 2010

Привет, я столкнулся с проблемой.

На моем сервере не установлен офис.Однако мне нужно получить доступ к данным из файла Excel.

Я использовал файл Microsoft.Office.Interop.Excel dll.У меня сложилось впечатление, что это будет работать

, потому что расположение dll

C:\Program Files\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office12\Microsoft.Office.Interop.Excel.dll

То же самое доступно и на сервере.Но там не установлен офис

Но когда я запустил программу, у меня возникло исключение

System Exception:System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154.

Поиск в Google не обеспечивает большой поддержки.

Кроме того, этоочень срочно.

Пожалуйста, помогите.

Ответы [ 4 ]

2 голосов
/ 25 июня 2010

Сборки Office PI просто оборачивают компоненты Office COM, чтобы обеспечить интерфейс, который можно вызывать из управляемого кода .NET.Вам все еще нужно установить Office, однако у вас есть другие варианты ...

Если вы работаете с файлами Office 2007, вы можете попробовать Open XML SDK 2.0 для Microsoft Office .

В качестве альтернативы, если вы работаете с файлами из более ранней версии Office, доступны сторонние библиотеки, например SpreadsheetGear .

2 голосов
/ 25 июня 2010

Если вы используете Excel & C #, попробуйте http://epplus.codeplex.com/

Бесплатная библиотека для чтения / записи электронных таблиц, очень и очень простая в использовании с Excel.

Пример чтения в файлах Excel в соответствии с требованиями OP:

FileInfo existingFile = new FileInfo(FilePath);
using (ExcelPackage package = new ExcelPackage(existingFile))
{
    // get the first worksheet in the workbook
    ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
    int col = 2; //The item description
    // output the data in column 2
    for (int row = 2; row < 5; row++)
        Console.WriteLine("\tCell({0},{1}).Value={2}", row, col, worksheet.Cells[row, col].Value);

    // output the formula in row 5
    Console.WriteLine("\tCell({0},{1}).Formula={2}", 3, 5, worksheet.Cells[3, 5].Formula);                
    Console.WriteLine("\tCell({0},{1}).FormulaR1C1={2}", 3, 5, worksheet.Cells[3, 5].FormulaR1C1);

} // the using statement automatically calls Dispose() which closes the package.

PS: Спросите с просьбой / спасибо, скорее всего, будет больше людей, чтобы помочь;)

1 голос
/ 25 июня 2010

Ты чучело в принципе. Файл взаимодействия просто указывает на COM-объект, который регистрируется в Excel при его установке.

Поскольку у вас нет Excel, его регистрация COM не будет в реестре, поэтому файл взаимодействия фактически указывает на неработающую ссылку, следовательно, вы получаете исключение COMEx.

Вам нужно установить Office, чтобы все работало как есть.

0 голосов
/ 25 июня 2010

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

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