превосходная альтернатива взаимодействия - PullRequest
8 голосов
/ 10 августа 2011

Я начал использовать сборки взаимодействия Excel, предоставленные Microsoft, для одного из моих приложений на C #.Все идет хорошо, но, похоже, не хватает строгой типизации, и, честно говоря, мне кажется, что я пишу код VBA.Существуют ли альтернативные способы взаимодействия с Excel из C #, которые позволили бы улучшить OO?Кстати, я использую VS2010 и .Net 4.0.

Ответы [ 6 ]

10 голосов
/ 10 августа 2011

Взгляните на проект EPPlus на Codeplex:

http://epplus.codeplex.com/

Я недавно использовал это, и он работал очень хорошо.(VS2010 и .Net4)

EPPlus - это библиотека .net, которая читает и записывает файлы Excel 2007/2010 с использованием формата Open Office Xml (xlsx).

Niceпример страницы: http://epplus.codeplex.com/wikipage?title=ContentSheetExample

1 голос
/ 01 марта 2012

Библиотеки NetOffice являются альтернативой основным сборкам взаимодействия Office (PIA).NetOffice предоставляет независимый от версии набор библиотек взаимодействия, поэтому вы можете поддерживать все версии Office с вашим приложением и включает IntelliSense, чтобы показать вам, какие методы доступны для каких версий Office.

NetOffice также немного помогает в сохраненииотслеживание ссылок COM, что иногда может быть проблемой при взаимодействии .NET / COM.

1 голос
/ 10 августа 2011

В зависимости от того, что вы пытаетесь сделать, например, для создания документа XLSX, вы можете использовать Open XML SDK .

Это хорошо для генерации офисных документов; тем более, что для работы не требуется установка офиса.

Это бесплатно; хороший чистый API, и поддерживается Microsoft. Например:

public static void CreateNewWordDocument(string document)
{
    using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(document, WordprocessingDocumentType.Document))
    {
        // Set the content of the document so that Word can open it.
        MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();

        SetMainDocumentContent(mainPart);
    }
}

Пример из: http://msdn.microsoft.com/en-us/library/bb497758.aspx. Примеры работы с электронными таблицами здесь .

Если вы пытаетесь напрямую взаимодействовать с Excel (например, автоматизация пользовательского интерфейса); не генерировать документ; тогда Китс ответит, как я пойду.

0 голосов
/ 10 августа 2011

OLE-автоматизация - это стандартный для Windows способ взаимодействия приложений, кроме буфера обмена. Поскольку не каждый язык, для которого требуется OLE, имеет универсальные (или даже строгую статическую типизацию), интерфейс обязательно является очень общим.

Если вы просто отказываетесь использовать OLE, вы можете использовать хост сценариев Windows, чтобы перемещаться по самому графическому интерфейсу и таким образом получать ваши данные, или копировать экран с помощью DLL-библиотеки WinAPI. Вы также можете написать или пролистать ETL для файлов Excel на основе стандартов документов для файлов XLS и XLSX. В любом случае, я думаю, что недостатки работы с OLE сводятся на нет тем преимуществом, что вам не нужно пытаться взаимодействовать с Excel любым другим способом.

0 голосов
/ 10 августа 2011

ExcelLibrary отлично.http://code.google.com/p/excellibrary/

0 голосов
/ 10 августа 2011

Какой тип взаимодействия вы ищете? Просто пишешь? чтение? Полный контроль над всеми аспектами?

Существует множество сторонних библиотек для работы с документами Excel, особенно если вы остаетесь в формате xlsx (2007 или новее). Если вы просто пишете вещи, есть даже реализации с открытым исходным кодом, на которые вы можете посмотреть (например, у Sourceforge Excel Writer ).

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