web-gelistirme-sc.com

Katıştırılamaz. Bunun yerine uygun arayüzü kullanın

Excel Forma sayfasına fotoğraf eklemeye çalışıyorum, ancak aşağıdaki hatayı almaya devam mı ediyorum?

Hata 1 Birlikte çalışma türü 'Microsoft.Office.Interop.Excel.ApplicationClass' gömülü olamaz. Bunun yerine uygun arayüzü kullanın.

ApplicationClass (); aşağıdaki kod satırında kırmızıyla işaretlenmiştir:

xlApp = yeni Excel.ApplicationClass ();

Bazıları lütfen bunu nasıl düzeltebileceğimi söyler mi?

using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Core;

private void btnWriteSpreedSheet_Click(object sender, EventArgs e)
        {
            Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;

            xlApp = new Excel.ApplicationClass(); //This is where the problem is??????
            xlWorkBook = xlApp.Workbooks.Add(misValue);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

            //add some text 
            xlWorkSheet.Cells[1, 1] = "http://csharp.net-informations.com";
            xlWorkSheet.Cells[2, 1] = "Adding picture in Excel File";

            xlWorkSheet.Shapes.AddPicture("C:\\csharp-xl-picture.JPG", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 50, 50, 300, 45);

              xlWorkBook.SaveAs("csharp.net-informations.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();

            releaseObject(xlApp);
            releaseObject(xlWorkBook);
            releaseObject(xlWorkSheet);

            MessageBox.Show ("File created !");
        }

        private void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
                MessageBox.Show("Unable to release the Object " + ex.ToString());
            }
            finally
            {
                GC.Collect();
            }
        } 

    }
43
Pomster

Projenizde "Başvurular" ı genişletin, Microsoft Office Interop referansını bulun. Sağ tıklayın ve özellikleri seçin ve "Birlikte Çalışma Türleri" ni false olarak değiştirin.

152
vcsjones

Bir MSDN blog yazısında açıklandığı gibi, "Birlikte Çalışma Türlerini Göm" özelliğini devre dışı bırakmak yerine

xlApp = new Excel.ApplicationClass();

içine

xlApp = new Excel.Application();

Excel.Application bir arabirim olsa da, bunu bir CoClass özniteliği ile süslendiği için başlatabiliriz, diğer SO answer: https://stackoverflow.com/a/11039870/501196

Bu yaklaşımı kullanmak (Gömme Birlikte Çalışma Türleri = true) projenizle daha az dosya dağıtmanız gerekme avantajına sahiptir ve gömülü türler yalnızca uygulamanızın gerçekten kullandığı yöntemleri ve türleri içerir. Harici birlikte çalışma derlemeleri kullandığınızda, başvurulan kitaplığın maruz bıraktığı tüm türleri ve yöntemleri oraya aktarıyorsunuz.

48
yms

Microsoft.Office.Interop.Excel Başvurusunu bulun ve sağ tıklayıp "Birlikte Çalışma Türlerini Göm" seçeneğini değiştirin, doğru ise false durumunu belirtir.

0
RDVN