Asp.Net’de Excel Kullanımında Çıkan “Retrieving the COM class factory for component with CLSID” Hatası ve Çözümü

Asp.net’de excel üzerinden bir geliştirme yaptığınızda başlıkta yer alan hatayı alıyorsanız o zaman makale devamındaki adımlar sizi çözüme götürebilir farklı yöntemlerden en azından biri çözüm olacaktır düşüncesindeyim çünkü bu tür makaleleri yazmadan önce çözüme hangi yolları denedikten sonra ulaştığımı adım adım not alıyorum bu şekilde makalelerimi yazıyorum zaten tecrübesine sahip olmadığın hiçbirşeyin makelesini yazmıyorum.

Öncelikle hatayı nasıl aldığıma bakarsak çok basit bir şekilde Microsoft.Office.Interop.Excel namespace’i altında yer alan Application sınıfından bir örnek alıp C:\test.xls dosyasını açıyoruz ilk sayfaya erişip excel kullanım aralığını elde ediyoruz ve kodumuzda şu şekilde:

Fakat yetki ile alakalı bir problemimiz olduğu için başlıktada belirttiğim gibi şu hatayı alıyoruz.

Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).

Bu sorunu aşmak için izlemeniz gereken yöntemleri şöyle sıralayabiliriz.

Bu yöntemlere makinede office kurulu olduğu varsayılıp anlatım o şekilde yapılacaktır.

Yöntem 1

Microsoft Office Excel güvenlik ayarlarını gerçekleştirmek için Bileşen Servislerine erişmeniz gerekiyor bunun için 2 farklı yöntemler bileşen servislerine erişebilirsiniz. İlki Kontrol Panel > Yönetimsel Araçlar > Bileşen Servisleri bir diğeride Çalıştır > mmc comexp.msc /32 komutunu çalıştırarak bileşen servisleri penceresini açabilirsiniz ardından alttaki iki grafikte gösterildiği gibi Component Services > Computers > My Computer > DCOM Config dizinine gidin burada office sürümünüe göre değişiklik gösterecek olan Microsoft Excel Application yada Microsoft Excel 97-2003 Document kayıtlarından biri olması gerekiyor.

asp.netde excel kullanımı 1

asp.netde excel kullanımı 2

Bende Office 2016 kurulu olduğundan Microsoft Excel Application olarak gözüküyor. Burada karar vermeniz gereken bir durum var oda eğer 1.yöntem sizin için çözüm olursa bu çözümü sadece excel uygulamayı içinmi yapmak istersiniz yoksa excel haricinde asp.net’de excel gibi birden fazla yazılım katmanını kullanıyor iseniz o zaman bu yetki işini burada resimde gözüken Microsoft Excel Application için değilde listelenen tüm uygulamalara yapmak için 2 üstte yer alan My Computers kırılımına sağ tuş yapıp Properties kısmından Security sekmesinden gerekli değişiklikleri yapabilirsiniz.

asp.netde excel kullanımı 3

2. Yöntem

Excel yazılımının sisteme tekrar kaydını gerçekleştirerek belki sorununuza çözüm bulabilirsiniz. Örnek Excel yazılımınızı kayıt etmek için öncelikle excel dizinine komut satırından erişmeniz gerekiyor eğer Office 2010 kullanıyorsanız C:\Program Files (x86)\Microsoft Office\Office14, Office 2007 kullanıyorsanız C:\Program Files (x86)\Microsoft Office\Office12 yada Office 2016 kullanıyorsanız C:\Program Files\Microsoft Office\Office16 yoluna gitmelisiniz.

Ben office 2016 kullandığım için komut satırından office 2016’ya dizine gidiyorum ve alttaki komutu yazıyorum böylelikle excel kaydını tekrar gerçekleştiriyorum sisteme.

C:\Program Files\Microsoft Office\Office16 > EXCEL.EXE –REGSERVER

Eğer word yazılımını tekrar kayıt etmek isteseniz alttaki kodu çalıştırmalısınız.

C:\Program Files\Microsoft Office\Office16 > WINWORD.EXE –REGSERVER

3. Yöntem

Office kurulumunu eksiksiz tamamladıktan sonra makineyi yeniden başlatın.

 

Eğer üstteki hatayı çözdükten sonra alttaki gibi bir hata alırsanız çözüm kısmındaki detayları uygulayın.

Server Error in ‘/’ Application.

Microsoft Office Excel cannot access the file ‘C:\inetpub\wwwroot\Content\yemek_listesi.xls’. There are several possible reasons:

• The file name or path does not exist.
• The file is being used by another program.
• The workbook you are trying to save has the same name as a currently open workbook.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: Microsoft Office Excel cannot access the file ‘C:\inetpub\wwwroot\Content\yemek_listesi.xls’. There are several possible reasons:

• The file name or path does not exist.
• The file is being used by another program.
• The workbook you are trying to save has the same name as a currently open workbook.

Çözüm için yapmanız gereken anlamsız gözükmesine rağmen 2.yöntem’i denedikten sonra yeni çıkan hataya 3.yöntemi uyguladıktan sonra kesin olarak benim sorunuma çözüm oldu.

Ben denediğim 3 farklı yöntemide sizlerle paylaştım belki benim işime yarayan çözümler sizin işinize yaramayıp diğer yöntemler ile çözüme kavuşabilirsiniz.

Asp.Net’de Excel Kullanımında Çıkan “Retrieving the COM class factory for component with CLSID” Hatası ve Çözümü
5 (100%) 3 oy

Bunlar da hoşunuza gidebilir...

4 Cevaplar

  1. Yunus dedi ki:

    Anlatım için çok teşekkürler, ellerinize sağlık. Bu yaz genellikle kullanıcıların host’a projeyi atıpda çalıştıramadıklarında ortaya çıkıyor ve bir türlüde çözülemiyor. Çözüm için hosting firmalarına ileteceğimiz çok güzel bir anlatım.

    Bşarılarınıın devamını diliyorum.

  2. Fatih dedi ki:

    Merhabalar 2.ci adımı denediğim sırada yazılımınız bu yetkiye erişim vermiyor diye hata veriyor,  böyle bir hata ile karşılaştınız mı ne yapabilirim bu durumda ?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.