В настоящее время я разрабатываю 64-битное приложение на С#, которое необходимо импортировать из таблицы Excel. Я слышал, что лучший способ сделать это - использовать соединения данных ADO. Тем не менее, я прочитал (и испытал), что для выполнения этой работы я должен писать 32-битное приложение, так как нет OleDb odbc-драйвера для 64-разрядных приложений.
Проблема заключается в том, что я не могу скомпилировать мое приложение в виде 32-разрядного приложения или других частей программы (которые не перезаписываются) сломается.
Тот факт, что я не могу импортировать данные из Excel в 64-битное приложение, кажется довольно смешной проблемой. Как решить эту проблему? Или, если нет, какие рабочие условия доступны?
Два возможных решения для вас:
Используйте Open XML SDK. Это специфический Office 2007, но он напрямую связан с файлами и не должен проходить через любой драйвер DB. Это мое оружие выбора, потому что оно намного быстрее и менее flaky, чем автоматизация, и может обрабатывать более "расширенные" задачи, такие как форматирование.
Скомпилируйте отдельный двоичный файл x86 и запустите процесс из вашего x64-приложения по мере необходимости. Приложение-импортер может либо предоставить обратную связь, используя некоторую форму IPC, либо просто преобразовать файл в нечто вроде CSV, которое вы можете читать изначально в приложении x64. (Я не являюсь поклонником этого типа kludge, но вы делаете то, что должны делать...)
Я согласен с тем, что это смешно, что у нас до сих пор нет драйвера x64 JET или ACE, но который выглядит так, как будто он пока. Даже MSDASQL не будет работать для вас; там 64-битная библиотека, но я прочитал, что компонент Excel по-прежнему работает только в 32-битном режиме.
SpreadsheetGear для .NET - это компонент, совместимый с Excel, который является безопасным управляемым кодом, написанным на С# и скомпилированным для "Any CPU", поэтому он работает с 32-битным и 64-битным .NET. Это одно из больших преимуществ .NET: одна сборка SpreadsheetGear.dll одинаково хорошо работает с 32-битным .NET CLR и 64-разрядным .NET CLR.
Вы можете увидеть онлайн-образцы здесь и загрузить бесплатную пробную версию здесь.
Отказ от ответственности: у меня есть SpreadsheetGear LLC
Изучали ли вы использование VSTO (Microsoft Visual Studio Tools for Office, которое, я считаю, теперь включено в состав VS 2008 и доступно в более ранних версиях как бесплатная загрузка из Microsoft)? Или с помощью OLE Automation?