Использование ADO 3.5 для импорта данных из Excel в 64-битное приложение

2

В настоящее время я разрабатываю 64-битное приложение на С#, которое необходимо импортировать из таблицы Excel. Я слышал, что лучший способ сделать это - использовать соединения данных ADO. Тем не менее, я прочитал (и испытал), что для выполнения этой работы я должен писать 32-битное приложение, так как нет OleDb odbc-драйвера для 64-разрядных приложений.

Проблема заключается в том, что я не могу скомпилировать мое приложение в виде 32-разрядного приложения или других частей программы (которые не перезаписываются) сломается.

Тот факт, что я не могу импортировать данные из Excel в 64-битное приложение, кажется довольно смешной проблемой. Как решить эту проблему? Или, если нет, какие рабочие условия доступны?

Теги:
excel
ado.net
64bit

3 ответа

3
Лучший ответ

Два возможных решения для вас:

  • Используйте Open XML SDK. Это специфический Office 2007, но он напрямую связан с файлами и не должен проходить через любой драйвер DB. Это мое оружие выбора, потому что оно намного быстрее и менее flaky, чем автоматизация, и может обрабатывать более "расширенные" задачи, такие как форматирование.

  • Скомпилируйте отдельный двоичный файл x86 и запустите процесс из вашего x64-приложения по мере необходимости. Приложение-импортер может либо предоставить обратную связь, используя некоторую форму IPC, либо просто преобразовать файл в нечто вроде CSV, которое вы можете читать изначально в приложении x64. (Я не являюсь поклонником этого типа kludge, но вы делаете то, что должны делать...)

Я согласен с тем, что это смешно, что у нас до сих пор нет драйвера x64 JET или ACE, но который выглядит так, как будто он пока. Даже MSDASQL не будет работать для вас; там 64-битная библиотека, но я прочитал, что компонент Excel по-прежнему работает только в 32-битном режиме.

0

SpreadsheetGear для .NET - это компонент, совместимый с Excel, который является безопасным управляемым кодом, написанным на С# и скомпилированным для "Any CPU", поэтому он работает с 32-битным и 64-битным .NET. Это одно из больших преимуществ .NET: одна сборка SpreadsheetGear.dll одинаково хорошо работает с 32-битным .NET CLR и 64-разрядным .NET CLR.

Вы можете увидеть онлайн-образцы здесь и загрузить бесплатную пробную версию здесь.

Отказ от ответственности: у меня есть SpreadsheetGear LLC

0

Изучали ли вы использование VSTO (Microsoft Visual Studio Tools for Office, которое, я считаю, теперь включено в состав VS 2008 и доступно в более ранних версиях как бесплатная загрузка из Microsoft)? Или с помощью OLE Automation?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню