31 Temmuz 2010 Cumartesi

Exception from hresult: 0x80028018 (TYPE_E_INVDATAREAD))

Excel ile çalışıyorsanız ve bu mesajı "Exception from hresult: 0x80028018 (TYPE_E_INVDATAREAD))" alıyorsanız muhtemelen Türkçe dışındaki bir dilde excel kullanıyor olmalısınız.

old format or invalid type library. Exception from hresult: 0x80028018 (TYPE_E_INVDATAREAD))

Eski biçim veya geçerli kitaplık türü. Exception from hresult: 0x80028018 (TYPE_E_INVDATAREAD))

Excel 'i kapatmadan "CurrentCulture" değiştirirsek sorun çıkmayacaktır. Başlangıçta eskiCI olarak saklayıp yazma işleminin sonunda CurrentCulture = eskiCI; değiştirisek yazma işlemi sırasında hata vermeyecektir. Yanlız yeni sürümde desteklenen bazı özellikleri mesela v12 de bulunan özellikleri v11 denemeye kalkarsanız yine hata ile karşılaşırsınız.



using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;
using System.Runtime.InteropServices;

Excel.Application excel;
Excel.Workbook workbook;
Excel.Worksheet workSheet;

excel = new Excel.Application();

System.Globalization.CultureInfo eskiCI = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

excel.Visible = true;
System.Threading.Thread.CurrentThread.CurrentCulture = eskiCI;

excel = null;
workbook = null;
workSheet = null;
GC.Collect();

2 yorum:

Adsız dedi ki...

Bende bunu versiondan kaynaklanıyor zannediyordum. office 2010 en de çalışmayınca dil aklıma hiç gelmemişti. Çok güncel ve kaliteli bir blog. Teşekkürler.

Orhan ÖCAL dedi ki...

Faydalı olabildiğime sevindim. Teşekkürler.