2011-11-24 16 views
7

üzerinde çalışmıyor MS Visual Web Developer 2008 Express Ed üzerinde geliştirirken bir sorunla karşılaştım. Windows7 64 bit işletim sisteminde ASP.NET C# geliştirme. Microsoft.Office.Interop.Excel, 64 bit

Ben bir Excel belgesini açmaya çalışıyorum, ama bana veriyor Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))

tüm işlemciler (Herhangi bir CPU, x64, x86) için yapı yapılandırılmış ama çalışmıyor. Cevabı internette araştırdım ama nasıl halledileceğimi bulamadım.

Microsoft Visual C# 2010 Express'te geliştirdiğimde garip olan, aynı sistem üzerinde çalışılan aynı kodun aynısıdır! nasıl olur? arkada çalışan aynı dll değil mi?

COM dll'yi değiştirmem gerekiyor, bu yüzden x64 sisteminde çalışacak mı?

Lütfen bana yardım edin, ne yapabilirim?

Benim kodudur:

using Excel = Microsoft.Office.Interop.Excel; 
xlApp = new Excel.Application(); 
__Log("Openning " + excelFileName); 
xlWorkBook = xlApp.Workbooks.Open(excelFileName, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(2); 
+0

:) yardımcı olur umarım, ancak bir 32 bit COM DLL varsa, muhtemelen bir x86 yapı kullanmak gerekir 64 bit Windows üzerinde çalışıyor olsanız bile projeniz. – Andrew

+0

Bence doğru fikri görüyorsun @Andrew. Eğer 32bit Excel ise, 64bit. Net onunla çalışmak istemez. X86 olarak inşa et ve çalışmalı. –

+0

Zaten bunu denedi .. ama aynı oldu, ben bu sorunun neden Visual C# ve sadece Web geliştirici – Bush

cevap

19

I (MS Excel 2010 olduğunu en azından benim durumumda olan) COM nesneleri ile Microsoft birlikte çalışma bir hata olduğunu öğrendim internet kazma sonra.

Hata, .NET'in iş parçacığınızın (C# veya VB kodu) yerelleştirilmenizin daha önce yüklediğiniz MS Excel yerelleştirmesi için uygun olduğunu ve Microsoft.Office.Interop kitaplığının eski veya geçersiz olduğunu bildirmediğini kontrol etmesidir.

Kişisel iplik yerelleştirme (kontrol panelinden -> bölgesel ve dil) Bilgisayarınız bölgesel ayarlardan türetilmiştir

Sonra bu sorunu çözmek için iki seçenek vardır:

  1. senin iplik değiştirmek için Office için dil paketini yükleyin
  2. (koduna göre) yerelleştirme

ilk çözüm şöyledir:

using System.Threading;  // For setting the Localization of the thread to fit 
using System.Globalization; // the of the MS Excel localization, because of the MS bug 

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 
excelFileName = System.IO.Path.Combine(excelPath, "Ziperty Buy Model for Web 11_11_2011.xlsm"); 
ben bu sorunu çözmek willl tamamen emin değilim gr8 gün

+0

içinde ortaya çıkmaz anlamıyorum ... daha fazla bilgi için, KB girişine karşılık gelen: http://support.microsoft. com/default.aspx? scid = kb; tr-us; 320369 – Otiel

+1

@Otiel: KB, bu hatanın VS 2005 ve Excel 2007 (ve daha eski sürümler) için geçerli olduğunu söylüyor. Açıklama eşleşiyor gibi görünüyor, ancak ilgisiz bir hata olabilir. –