none
Pictureboxtan var olan Excelin istenen hücresine resim ekleme RRS feed

  • Genel Tartışma

  • Merhaba,

    Bir proje ile uğraşmaktayım. ve pictureboxtaki resmi var olan excelde istediğim bir hücreye aktarmak istiyorum.

    Teşekkür ederim

    24 Temmuz 2019 Çarşamba 16:17

Tüm Yanıtlar

  • void Main()
    {
      string file = @"C:\Program Files\Microsoft SQL Server\MSRS11.SQLEXPRESS2012\Reporting Services\ReportManager\images\data_source_32.gif";
                
      Excel.Application xlApp = new Excel.Application();
      
      
      Excel.Workbook workbook = xlApp.Workbooks.Add();
      Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1];
      Excel.Range range = worksheet.Range["B3", "D5"];
      
      worksheet.Shapes.AddPicture( file, 
        Microsoft.Office.Core.MsoTriState.msoFalse, 
        Microsoft.Office.Core.MsoTriState.msoTrue,
        Convert.ToSingle(range.Left),
        Convert.ToSingle(range.Top), 
        Convert.ToSingle(range.Width), 
        Convert.ToSingle(range.Height));
      
      xlApp.Visible = true;
    }



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    24 Temmuz 2019 Çarşamba 18:24
    Yanıtlayıcı
  • yardmınız için teşekkürler. fakat benim istediğim, zaten benim bir excel dosyam var. ben var olan excel dosyamın istediğim hücresine resmi kaydetmek istiyorum.

    sizin verdiğiniz örnekte tekrar bir excel dosyası açıyor.

    24 Temmuz 2019 Çarşamba 23:33
  • yardmınız için teşekkürler. fakat benim istediğim, zaten benim bir excel dosyam var. ben var olan excel dosyamın istediğim hücresine resmi kaydetmek istiyorum.

    sizin verdiğiniz örnekte tekrar bir excel dosyası açıyor.

    :) Aradaki fark:

    Excel.Workbook workbook = xlApp.Workbooks.Add();

    yerine:

    var excelDosyasi = @"c:\DizinAdi\Dosyadi.xlsx";
    Excel.Workbook workbook = xlApp.Workbooks.Open( excelDosyasi);



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    25 Temmuz 2019 Perşembe 13:04
    Yanıtlayıcı
  • Merhaba,

    Dediğiniz şekilde yine olmuyor. 

    string file = @"C:\Users\Engineer\Desktop\Yeni Microsoft Excel Çalışma Sayfası.xlsx";
    
                Excel.Application xlApp = new Excel.Application();
    
                var excelDosyasi = @"C:\Users\Engineer\Desktop\Yeni Microsoft Excel Çalışma Sayfası.xlsx";
                Excel.Workbook workbook = xlApp.Workbooks.Open(excelDosyasi);
                Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1];
                Excel.Range range = worksheet.Range["I3", "K15"];
    
                worksheet.Shapes.AddPicture(file,
                  Microsoft.Office.Core.MsoTriState.msoFalse,
                  Microsoft.Office.Core.MsoTriState.msoTrue,
                  Convert.ToSingle(range.Left),
                  Convert.ToSingle(range.Top),
                  Convert.ToSingle(range.Width),
                  Convert.ToSingle(range.Height));
    
                xlApp.Visible = true;

    Excel.Application xlApp = new Excel.Application(); bunu silince 4. satırda xlApp hata veriyor.

    ayrıca ben resmi picturebox a showdialogdan alıyorum. sql kullanmayacağım. nasıl yapabilirim bu kodu değiştirerek.


    25 Temmuz 2019 Perşembe 14:03
  • Merhaba,

    Dediğiniz şekilde yine olmuyor. 

    string file = @"C:\Users\Engineer\Desktop\Yeni Microsoft Excel Çalışma Sayfası.xlsx";
    
                Excel.Application xlApp = new Excel.Application();
    
                var excelDosyasi = @"C:\Users\Engineer\Desktop\Yeni Microsoft Excel Çalışma Sayfası.xlsx";
                Excel.Workbook workbook = xlApp.Workbooks.Open(excelDosyasi);
                Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1];
                Excel.Range range = worksheet.Range["I3", "K15"];
    
                worksheet.Shapes.AddPicture(file,
                  Microsoft.Office.Core.MsoTriState.msoFalse,
                  Microsoft.Office.Core.MsoTriState.msoTrue,
                  Convert.ToSingle(range.Left),
                  Convert.ToSingle(range.Top),
                  Convert.ToSingle(range.Width),
                  Convert.ToSingle(range.Height));
    
                xlApp.Visible = true;

    Excel.Application xlApp = new Excel.Application(); bunu silince 4. satırda xlApp hata veriyor.

    ayrıca ben resmi picturebox a showdialogdan alıyorum. sql kullanmayacağım. nasıl yapabilirim bu kodu değiştirerek.


    "dediğiniz sekilde olmuyor" :)

    Ben nerede Excel.Application ... satirini silin dedim????

    Sanirim once dilin temellerini öğrenseniz cok daha iyi. 

    "picturebox'a showdialogdan alıyorum. sql kullanmayacağım" ne demek? SQL ile kodun baglantisini nasıl kurdunuz?



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    25 Temmuz 2019 Perşembe 15:12
    Yanıtlayıcı
  • Ben bu satırı istemiyorum. çünkü ben resmi kendi elimle forma eklemek istiyorum openfiledialogtan.

     string file = @"C:\Program Files\Microsoft SQL Server\MSRS11.SQLEXPRESS2012\Reporting Services\ReportManager\images\data_source_32.gif";

    ayrıca,

    Excel.Application xlApp = new Excel.Application();

    bu satır yeni bir excel sayfası açılmasına sebeb oluyor. ben yeni bir excel sayfası istemiyorum. zaten benim hazır excelim var. onun içine resim atmak istiyorum.

    25 Temmuz 2019 Perşembe 15:59
  • Anlasamiyoruz. Dedigim gibi, once dilin temellerini öğrenmenizde fayda var, yoksa hep boyle noktasına virgülüne kadar benim kodumu yazin seklinde olmaz.

    Orada opendfiledialogtan gelen ismi neden kendiniz koymuyorsunuz?

    string file = ofd.FileName;

    Excel.Application xlApp = new Excel.Application();

    satirini istemiyorsanız, var dediğiniz Excel'in referansini kendiniz koyun (bunu yapmaya kalkasmanizi hiç tavsiye etmem ama kod sizin kodunuz). Onun yerine add-in yazsanız daha iyi (ama temellerde takiliyorsunuz, add-in cok ağır kapar).



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    25 Temmuz 2019 Perşembe 16:13
    Yanıtlayıcı
  • merhaba yardımlarınız için teşekkür ederim. hallettim problemi.

    BAŞKA BU SORUNU YAŞAYANLAR İÇİN KODLAR AŞAĞIDADIR.

    //----Resim aktar excele

    Microsoft.Office.Interop.Excel.Application Excelim = new Microsoft.Office.Interop.Excel.Application();
                Microsoft.Office.Interop.Excel.Workbook kitab = Excelim.Workbooks.Open(@"C:\Users\PC ADI\Desktop\Yeni Microsoft Excel Çalışma Sayfası.xlsx");
                Microsoft.Office.Interop.Excel.Worksheet sayfam = (Worksheet)Excelim.ActiveWorkbook.ActiveSheet;

    kitab = Excelim.Workbooks.Open(@"C:\Users\PC ADI\Desktop\Yeni Microsoft Excel Çalışma Sayfası.xlsx"); // VAR OLAN exceli aç sayfam = (Excel.Worksheet)kitab.Worksheets.get_Item(1); // 1. sayfayı aç Excel.Range range = sayfam.Range["I3", "K15"]; //RESMİ GÖNDERECEĞİMİZ HÜCRELERİ BELİRTİYORUZ. I3 SOL ÜST KÖŞESİ HÜCRENİN, K15 SAĞ ALT KÖŞESİ HÜCRENİN. HÜCRE BİRLEŞİK BİR HÜCRE OLDUĞU İÇİN. sayfam.Shapes.AddPicture(pictureBox3.ImageLocation, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, Convert.ToSingle(range.Left), Convert.ToSingle(range.Top), Convert.ToSingle(range.Width), Convert.ToSingle(range.Height));



    • Düzenleyen Visual Hero 25 Temmuz 2019 Perşembe 21:37 kelimlerde yazım yanlışı
    25 Temmuz 2019 Perşembe 21:36
  • merhaba yardımlarınız için teşekkür ederim. hallettim problemi.

    BAŞKA BU SORUNU YAŞAYANLAR İÇİN KODLAR AŞAĞIDADIR.

    //----Resim aktar excele

    Microsoft.Office.Interop.Excel.Application Excelim = new Microsoft.Office.Interop.Excel.Application();
                Microsoft.Office.Interop.Excel.Workbook kitab = Excelim.Workbooks.Open(@"C:\Users\PC ADI\Desktop\Yeni Microsoft Excel Çalışma Sayfası.xlsx");
                Microsoft.Office.Interop.Excel.Worksheet sayfam = (Worksheet)Excelim.ActiveWorkbook.ActiveSheet;

    kitab = Excelim.Workbooks.Open(@"C:\Users\PC ADI\Desktop\Yeni Microsoft Excel Çalışma Sayfası.xlsx"); // VAR OLAN exceli aç sayfam = (Excel.Worksheet)kitab.Worksheets.get_Item(1); // 1. sayfayı aç Excel.Range range = sayfam.Range["I3", "K15"]; //RESMİ GÖNDERECEĞİMİZ HÜCRELERİ BELİRTİYORUZ. I3 SOL ÜST KÖŞESİ HÜCRENİN, K15 SAĞ ALT KÖŞESİ HÜCRENİN. HÜCRE BİRLEŞİK BİR HÜCRE OLDUĞU İÇİN. sayfam.Shapes.AddPicture(pictureBox3.ImageLocation, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, Convert.ToSingle(range.Left), Convert.ToSingle(range.Top), Convert.ToSingle(range.Width), Convert.ToSingle(range.Height));



    Allah Allah, demek xlApp yerine excelim demek gerekiyormus :) Bir yaşıma daha girdim. Hakikaten sen çözmüşsün, önceki yazılanlardan cok farklı.



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    26 Temmuz 2019 Cuma 13:05
    Yanıtlayıcı
  • kendi yazdığınız yazılım ile benim en son paylaştığımı karşılaştırın ve aradaki farkları bulun. o bulduğunuz farkları ben başka yerlerden bularak yazılımı istediğim şekle getirdim. 

    bana yukarıda var olan excelin satırını koy dediniz bende koydum. 

    Teşekkürler.


    26 Temmuz 2019 Cuma 15:26
  • resmi clipboard a kopyalayıp excel e hücreye range ile odaklanıp paste yapacaksın

    böyle yani 

     appXL1.ActiveSheet.paste()

    tabi önce clipboard daki değeri bir değişkene ata işin bitince tekrar clipboard a geri yükleki clipboard kirlenmesin bu iş için 

    Resim kopyalamak için şunun gibi bir şey kullan 

    public void ResimCopy(Image resim)
    {
        try
        {
            Clipboard.Clear();
            Clipboard.SetDataObject(resim);
        }
        catch (Exception ex)
        {
        }
    }

    • Düzenleyen hakan1992 27 Temmuz 2019 Cumartesi 07:55
    27 Temmuz 2019 Cumartesi 07:48
  • resmi clipboard a kopyalayıp excel e hücreye range ile odaklanıp paste yapacaksın

    böyle yani 

     appXL1.ActiveSheet.paste()

    tabi önce clipboard daki değeri bir değişkene ata işin bitince tekrar clipboard a geri yükleki clipboard kirlenmesin bu iş için 

    Resim kopyalamak için şunun gibi bir şey kullan 

    public void ResimCopy(Image resim)
    {
        try
        {
            Clipboard.Clear();
            Clipboard.SetDataObject(resim);
        }
        catch (Exception ex)
        {
        }
    }

    Copy&Paste olmadan excele resim eklenemiyor mu yani :) 


    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    27 Temmuz 2019 Cumartesi 11:56
    Yanıtlayıcı
  • Kopyalama yapmaya gerek yok.

    Aşağıdaki kodlarla işinizi halledebilirsiniz.

    Yorumunuz için teşekkür ederim.

    //----Resim aktar excele            Microsoft.Office.Interop.Excel.Application Excelim = new Microsoft.Office.Interop.Excel.Application();
                Microsoft.Office.Interop.Excel.Workbook kitab = Excelim.Workbooks.Open(@"C:\Users\PC ADI\Desktop\Yeni Microsoft Excel Çalışma Sayfası.xlsx");
                Microsoft.Office.Interop.Excel.Worksheet sayfam = (Worksheet)Excelim.ActiveWorkbook.ActiveSheet;
    
                kitab = Excelim.Workbooks.Open(@"C:\Users\PC ADI\Desktop\Yeni Microsoft Excel Çalışma Sayfası.xlsx");    // VAR OLAN exceli aç
                sayfam = (Excel.Worksheet)kitab.Worksheets.get_Item(1);   // 1. sayfayı aç
                Excel.Range range = sayfam.Range["I3", "K15"];   //RESMİ GÖNDERECEĞİMİZ HÜCRELERİ BELİRTİYORUZ. I3 SOL ÜST KÖŞESİ HÜCRENİN, K15 SAĞ ALT KÖŞESİ HÜCRENİN. HÜCRE BİRLEŞİK BİR HÜCRE OLDUĞU İÇİN.
    
                sayfam.Shapes.AddPicture(pictureBox3.ImageLocation,
                    Microsoft.Office.Core.MsoTriState.msoFalse,
                    Microsoft.Office.Core.MsoTriState.msoCTrue,
                    Convert.ToSingle(range.Left),
                    Convert.ToSingle(range.Top),
                    Convert.ToSingle(range.Width),
                    Convert.ToSingle(range.Height));


    27 Temmuz 2019 Cumartesi 19:34
  • resmi file haline getirip load ettirmekten daha kolay bence. Ama Çetin bey in önerisinde galiba resmi pozisyonlamak da mümkün bu açıdan daha tercih edilebilir olabilir. Yani paste ile hücreye sıfırlar sol üst köşesini malum bu her zaman iyi olmayacaktır elbette

    Resmi paste edip üstüne birde pozisyonlayabilirsek yinede paste çok avantajlı olabilir ama 


    • Düzenleyen hakan1992 27 Temmuz 2019 Cumartesi 19:52
    27 Temmuz 2019 Cumartesi 19:48
  • bu komut ile resmi koyacağımız hücreyi belirtiyoruz.

    Excel.Range range = sayfam.Range["I3", "K15"]; //birleşik bir hücre. I3 SOL ÜST KÖŞESİ HÜCRENİN, K15 SAĞ ALT KÖŞESİ HÜCRENİN.

    bu komutlar ile de resmi hücrenin büyüklüğüne göre pozisyonluyor.

    sayfam.Shapes.AddPicture(pictureBox3.ImageLocation,

    Microsoft.Office.Core.MsoTriState.msoFalse,

    Microsoft.Office.Core.MsoTriState.msoCTrue,

    Convert.ToSingle(range.Left),

    Convert.ToSingle(range.Top),

    Convert.ToSingle(range.Width),

    Convert.ToSingle(range.Height));

    27 Temmuz 2019 Cumartesi 20:30