1. Ana Sayfa
  2. Visual Studio C#
  3. C# Excel Resim Alma ve DataGridView Aktarma

C# Excel Resim Alma ve DataGridView Aktarma

C# Excel Resim Alma ve DataGridView Aktarma

Ş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;
            }
        }
    }
}

Kimler Neler Demiş?

Bir Cevap Yazın

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

  Subscribe  
Bildir