1

Помогите с решением такой задачи. Имеем 2 datagridview с данными с екселя. Нужно пройтись по каждому 1-му столбцу и сравнить ячейки,при совпадении записать в 2-й столбец 2-го грида например "Да" или нет если несовпало На фото будет понятней что нужно

У меня есть код который загружает данные с екселя (с уроков на ютубе взят) все работает,а вот что и как дальше сделать не знаю. С 1 листом потыкался и за неделю научился дергать с него данные,а вот как работать с 2 сразу это пока не могу понять. Подсобите решением буду очень признателен за помощь.

using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using ExcelDataReader;

namespace exelTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } DataSet result; private void button1_Click(object sender, EventArgs e) { using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "Excel 97-2003.xls|.xls|Excel .xlsx|.xlsx|Excel .csv|*.csv", ValidateNames = true }) if (ofd.ShowDialog() == DialogResult.OK) { FileStream fs = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read); IExcelDataReader reader; if (ofd.FilterIndex == 1) reader = ExcelReaderFactory.CreateBinaryReader(fs); else reader = ExcelReaderFactory.CreateOpenXmlReader(fs); //reader.IsFirstRowAsColumnNames = true; //result = reader.AsDataSet(); result = reader.AsDataSet(new ExcelDataSetConfiguration() { ConfigureDataTable = (_) => new ExcelDataTableConfiguration() { UseHeaderRow = true } }); comboBox1.Items.Clear(); foreach (DataTable dt in result.Tables) comboBox1.Items.Add(dt.TableName); reader.Close(); textBox1.Text = ofd.FileName; } }

    public void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)
    {
        dataGridView1.DataSource = result.Tables[comboBox1.SelectedIndex];
        // определить количество столбцов
        int n;
        n = dataGridView1.Columns.Count;
        textBox3.Text = n.ToString();
        // определить количество строк без строки заголовка
        int nt;
        nt = dataGridView1.Rows.Count;
        textBox4.Text = (nt - 1).ToString();
        DataTable dt = result.Tables[0];




    }

    public void button2_Click(object sender, EventArgs e)
    {
        using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "Excel 97-2003.xls|*.xls|Excel .xlsx|*.xlsx|Excel .csv|*.csv", ValidateNames = true })
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                FileStream fs = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read);
                IExcelDataReader reader;
                if (ofd.FilterIndex == 1)
                    reader = ExcelReaderFactory.CreateBinaryReader(fs);
                else
                    reader = ExcelReaderFactory.CreateOpenXmlReader(fs);
                //reader.IsFirstRowAsColumnNames = true;
                //result = reader.AsDataSet();
                result = reader.AsDataSet(new ExcelDataSetConfiguration() { ConfigureDataTable = (_) => new ExcelDataTableConfiguration() { UseHeaderRow = true } });
                comboBox2.Items.Clear();
                foreach (DataTable dt2 in result.Tables)
                    comboBox2.Items.Add(dt2.TableName);
                reader.Close();
                textBox5.Text = ofd.FileName;
            }

    }

    public void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        dataGridView2.DataSource = result.Tables[comboBox2.SelectedIndex];
        // определить количество столбцов
        int n;
        n = dataGridView2.Columns.Count;
        textBox6.Text = n.ToString();
        // определить количество строк без строки заголовка
        int nt;
        nt = dataGridView2.Rows.Count;
        textBox7.Text = (nt - 1).ToString();
        DataTable dt2 = result.Tables[0];
    }

    public void button3_Click(object sender, EventArgs e)
    {


    }
}

}

aepot
  • 49,560
Serjin
  • 35

0 Answers0