Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Не могу открыть эксель-файл.


Автор: Bogdan1024 1.6.2009, 00:32
Код

            Microsoft.Office.Interop.Excel.ApplicationClass x = new Microsoft.Office.Interop.Excel.ApplicationClass();
            Microsoft.Office.Interop.Excel.Workbook wb = x.Workbooks.Open(Environment.CurrentDirectory + "/1.xlsx", 0, false, 5, System.Reflection.Missing.Value, System.Reflection.Missing.Value, false, System.Reflection.Missing.Value, System.Reflection.Missing.Value, true, false, System.Reflection.Missing.Value, false, false, false);//Open the excel sheet

Кидает: "Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))". Я как угодно его пересохранял, всё равно кидает. Что не так?

Добавлено через 12 минут и 49 секунд
Код

System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;

Пробовал, не помогает.

Автор: Лен 2.6.2009, 13:11
1. "Как угодно" может не покатить. Какой офис у тебя установлен на компе? (файлы форматов doc/xsl, полученные от 2007го офиса 2003им открываются не всегда, к сожалению)
2. Ещё, если дело в культуре - попробуй в первую очередь поиграться с настройками "Язык и региональные стандарты". (у меня стояла английская винда, русский 2007ой офис и белорусские региональные настройки - в итоге такая хрень иногда сыпалась!!!)
3. Попобуй убрать из xsl-файла все макросы, функции, фильтры и сортировки - очень часто случается, что они тоже привязаны к языку и версии офиса.

Автор: Fish 2.6.2009, 14:00
Код
System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;
 System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

Автор: Bogdan1024 2.6.2009, 18:57
у меня 2007

Автор: jonie 2.6.2009, 20:38
интеропы нужно брать те который PIA. Подробно тут: http://msdn.microsoft.com/en-us/library/15s06t57(VS.80).aspx

но это, как мне кажется, не решит вашу проблему, зато поможет избежать других.

Автор: Bio 3.6.2009, 13:23
Код

Microsoft.Office.Interop.Excel.Application x = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook wb = (Workbook)(x.Workbooks.Open(Environment.CurrentDirectory + "/1.xlsx",0, false, 5, "", "",
                    false, XlPlatform.xlWindows, "", true, false, 0, true, false, false)); 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)