Я нашел возможное решение здесь: http://www.made4dotnet.com/Default.aspx?tabid=141&aid=15
Edit:
Если вы автоматизируете Microsoft Excel с помощью Microsoft Visual Basic .NET, Microsoft Visual C # .NET или Microsoft Visual C ++, вы можете получить следующие ошибки при вызове определенных методов, потому что для компьютера задан языковой стандарт, отличный от английского ( ID локали или LCID 1033):
Исключение из HRESULT: 0x800A03EC
и / или
Старый формат или недопустимая библиотека типов
РЕШЕНИЕ 1:
Чтобы обойти эту ошибку, вы можете присвоить CurrentCulture значение en-US при выполнении кода, связанного с Excel, и вернуться к исходному состоянию, используя эти 2 функции.
//declare a variable to hold the CurrentCulture
System.Globalization.CultureInfo oldCI;
//get the old CurrenCulture and set the new, en-US
void SetNewCurrentCulture()
{
oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
}
//reset Current Culture back to the originale
void ResetCurrentCulture()
{
System.Threading.Thread.CurrentThread.CurrentCulture = oldCI;
}
РЕШЕНИЕ 2:
Еще одно решение, которое может сработать, - создать каталог 1033 в Microsoft Office \ Office11 (или в соответствующей версии office), скопировать файл excel.exe в каталог 1033 и переименовать его в xllex.dll.
Хотя вы можете решить эту проблему, используя одно из этих решений, при вызове объектной модели Excel в локалях, отличных от американского английского, объектная модель Excel может работать по-другому, и ваш код может дать сбой, о котором вы могли и не подумать. Например, у вас может быть код, который устанавливает значение диапазона в дату:
yourRange.Value2 = "10/10/09"
В зависимости от локали этот код может действовать по-разному, в результате чего Excel помещает в диапазон любое из следующих значений:
10 октября 2009 г.
10 сентября 2009 г.
9 октября 2010 года