1. Anasayfa
  2. Visual Studio C#

C# Excel Resim Alma ve DataGridView Aktarma

C# Excel Resim Alma ve DataGridView Aktarma
C# Excel’den Resim Alma
0

Şimdiye kadar hep C# ile Excele veri ekleme yada resim ekleme işlemlerinden bahsettik peki excel dosyasındaki resimleri alıp kaydetme ve bunları DataGridView içinde gösterme işlemi nasıl yapılır kısaca anlatmaya çalışacağım. ilk olarak form tasarımını yapıyoruz form üzerine iki button, bir DataGridView ve OpenfileDialog ekliyoruz. OpenfileDialog ile C# ile üzerinde işlem yapacağımız excel dosyasını seçiyoruz; ve geldik en önemli noktaya excelden resim verilerini nasıl alacağız bunun için uygulamamıza NPOI kütüphanesini eklememiz gerekiyor proje isminde manage nuget packages diyip Browse daha sonra NPOI seçip kurulumu yapıyoruz . Kodlar ve kısa kullanım videosu

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using NPOI.XSSF.UserModel;
using NPOI.HSSF.UserModel;

namespace excelden_resim_okuma
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            XSSFWorkbook hssfwb;
            //HSSFWorkbook hssfwb;
            using (FileStream file = new FileStream(@DosyaYolu, FileMode.Open, FileAccess.Read))
            {
                // hssfwb = new HSSFWorkbook(file);
                hssfwb = new XSSFWorkbook(file);
            }
            var lst = hssfwb.GetAllPictures();

            DataGridViewImageColumn imageCol = new DataGridViewImageColumn();

            //http://www.bilisimogretmeni.com/
            dataGridView1.Columns.Add(imageCol);

            int a = 0;

            for (int i = 0; i < lst.Count; i += 2)
            {
                var pic = (XSSFPictureData)lst[i];
                byte[] data = pic.Data;
                if (data != null || data.Length <= 0)
                {
                    BinaryWriter writer = new BinaryWriter(File.OpenWrite(Application.StartupPath + "\\image\\" + String.Format("{0}.jpeg", i)));
                    writer.Write(data);
                    writer.Flush();
                    writer.Close();
                }//http://www.bilisimogretmeni.com/
                Bitmap img;
                img = new Bitmap(@Application.StartupPath + "\\image\\" + String.Format("{0}.jpeg", i));
                dataGridView1.Rows.Add();
                dataGridView1.Rows[a].Cells[0].Value = img;
                a++;

            }

            for (int i = 0; i < dataGridView1.Columns.Count; i++)
                if (dataGridView1.Columns[i] is DataGridViewImageColumn)
                {
                    ((DataGridViewImageColumn)dataGridView1.Columns[i]).ImageLayout = DataGridViewImageCellLayout.Stretch;
                    break;
                }

        }
        string DosyaYolu = "";
        string DosyaAdi = "";

        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog file = new OpenFileDialog();
            file.Filter = "Excel Dosyası |*.xlsx| Excel Dosyası|*.xls";
            file.FilterIndex = 2;
            file.RestoreDirectory = true;
            file.CheckFileExists = false;
            file.Title = "Excel Dosyası Seçiniz..";

            if (file.ShowDialog() == DialogResult.OK)
            {
                DosyaYolu = file.FileName;
                DosyaAdi = file.SafeFileName;
            }
        }
    }
}

Bu İçeriğe Tepkin Ne Oldu?
  • 2
    ba_ar_l_
    Başarılı
  • 0
    gayet_yi
    Gayet İyi
  • 2
    te_ekk_rler
    Teşekkürler
  • 0
    anlamad_m
    Anlamadım
  • 0
    yetersiz
    Yetersiz
İlginizi Çekebilir
Subscribe
Bildir
guest

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.

0 Yorum
Inline Feedbacks
View all comments