|
![]() |
#1 |
Заноза в заднице
|
Ещё одна интересная бага обнаружилась, связанная с локализацией офиса и используемой CurrentThread.CurrentCulture. Выглядит это так:
Использован старый формат, либо библиотека имеет неверный тип. (Исключение из HRESULT: 0x80028018 (TYPE_E_INVDATAREAD)) Скорее всего речь в несовместимости локализации и culture. Точного ответа и внятных объяснений на этот вопрос найти не удалось, однако есть некие строки, которые должны по идее исправить положение: 1. Присвоить CurrentCulture значение инвариатной CultureInfo до объявления класса приложения (Application) Interop.Excel (у меня это как раз-таки вызвало упомянутую выше ошибку, но только на ангельском языке) - что это дает, мне неведомо, а объяснения из MSDN на ангельском же языке до меня не очень доходят: Код: System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture; 2. Точно указать используемую культуру. Для этого какминимум надо знать, какая культура нужна. Хотя скорее всего, речь о том, что тогда уж лучше в свойствах IIS задать значение необходимой культуры, хотя... Код: // перед объявлением класса приложения (Application) Interop.Excel: System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCulture; System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); //... // <выполнение процедур с данными excel> // ... // после строки "currApp.Workbooks.Close();": System.Threading.Thread.CurrentThread.CurrentCulture = oldCI;
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|