Помогите с решением такой задачи.
Имеем 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)
{
}
}
}
DataTable– aepot Nov 30 '20 at 11:28