Ошибка при открытии Excel в 2007 году - PullRequest
0 голосов
/ 28 апреля 2011

У меня есть приложение C # WPF, которое использует библиотеки взаимодействия Excel для создания и открытия таблиц Excel. До сих пор это нормально работало на компьютере с XP с Office 2003. Но я недавно перенес это на компьютер с Windows 2007, на котором работает Excel 2007. Теперь мой экспорт в Excel больше не работает. Выдает ошибку, подобную приведенной ниже:

System.Runtime.InteropServices.COMException (0x800A03EC): The document is corrupt and cannot be opened. To try and repair it, use the Open and Repair command in the Open dialog box and select Extract Data when prompted.
   at Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)

Я использую код ниже, чтобы открыть мой файл Excel ..

 private void OpenSavedData(string fileName)
        {

            var excelApp = new Application();
            excelApp.Workbooks.Open(
                fileName,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            excelApp.Visible = true;

            Marshal.ReleaseComObject(excelApp);
        }

Это не проблема при работе в Office 2003 и XP, но по какой-то причине происходит сбой в Win7 и Office 2007. Не могли бы вы сообщить мне о возможных обходных путях / решениях для этого?

Спасибо, -Mike

Ответы [ 2 ]

4 голосов
/ 28 апреля 2011

Я думаю, что вы можете использовать раннее связывание с Excel 2003, и поэтому оно не работает с Excel 2007. В основном вам нужно перекомпилировать приложение, ссылаясь на соответствующие библиотеки взаимодействия для Excel 2007 (Microsoft.Interop.Office.Excel версии 1.6, можно найти в «Добавить ссылку» -> «COM» на компьютере с установленным Office 2007).Вы можете Google рано и поздно связывать, чтобы получить больше информации об этом.Вот ссылка, с которой можно начать: http://peltiertech.com/Excel/EarlyLateBinding.html

1 голос
/ 03 апреля 2012

Я сам видел ту же проблему при обновлении до Windows 7. Возможно, это внезапный шок от моего кода WPF, работающего в 64-битной среде ... Я не уверен!

МойРешение было немного решительным.Я полностью переписал код "Экспорт в Excel" моего WPF-приложения, чтобы использовать библиотеки OpenXML вместо библиотек VSTO (которые всегда добавляли нестабильность моим приложениям .Net).

Я задокументировал, что я сделал, и весь исходный код, а также демонстрационная версия предоставлены здесь: http://www.mikesknowledgebase.com/pages/CSharp/ExportToExcel.htm

После того, как вы связались в моей библиотеке, экспорт DataSet или DataTableтак же просто, как добавить одну строку кода.

CreateExcelFile.CreateExcelDocument(myDataSet, "C:\\MikesExcelFile.xlsx");

Это не намного проще, чем это!

Надеюсь, это поможет.

Майк

...