Как работать с колонками в DataGridvew? - C#

Формулировка задачи:

Помогите сделать кнопку-обработчик полей в определенном столбце таблицы, загруженной из MS Excel, чтобы по части слова, если оно присутствует в поле, в другой столбец поля соответствующей строки, записывался соответствующий заданному поисковому отрезку слова класс. Например, мне нужно из товаров отобрать автотовары, и везде где встречаются отрывки «авто», «колес», «диск», но не встречается «двд», в последний столбец строк, в которых найдены эти фрагменты, записывалась категория «автотовары». Очень-очень буду благодарна, если подскажете! :smile Данные на интерфейсе отображаю с помощью DataGridVew

Код к задаче: «Как работать с колонками в DataGridvew? - C#»

textual
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private Microsoft.Office.Interop.Excel.Application ObjExcel;
        private Microsoft.Office.Interop.Excel.Workbook ObjWorkBook;
        private Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheet;
        private string fileName;
        BindingSource bis = new BindingSource();
        public static DataTable TABLE = new DataTable();
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            fileName = System.Windows.Forms.Application.StartupPath + "\\" + textBox1.Text + ".xlsx";
            try
            {
                ObjExcel = new Microsoft.Office.Interop.Excel.Application();
                //Книга.
                ObjWorkBook = ObjExcel.Workbooks.Add(System.Reflection.Missing.Value);
                //Таблица.
                ObjWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ObjWorkBook.Sheets[1];
 
                for (int i = 0; i < TABLE.Rows.Count; i++)
                {
                    DataRow row = TABLE.Rows[i]; // строки
 
                    for (int j = 0; j < row.ItemArray.Length; j++) //цикл по ячейкам строки
                    {
                        ObjExcel.Cells[i + 1, j + 1] = row.ItemArray[j];
                    }
                }
 
                ObjWorkBook.SaveAs(fileName);
            }
            catch (Exception ex) { MessageBox.Show(ex.Message, "Error"); }
            finally
            {
                {
                    ObjWorkBook.Close();
                    // Закрытие приложения Excel.
                    ObjExcel.Quit();
                    ObjWorkBook = null;
                    ObjWorkSheet = null;
                    ObjExcel = null;
                    GC.Collect();
                }
            }
            this.Text = this.Text + " - " + textBox1.Text + ".xlsx";
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
             OpenFileDialog openDialog = new OpenFileDialog();
            openDialog.Filter = "Файл Excel|*.XLSX;*.XLS";
            openDialog.ShowDialog();
 
            try
            {
                ObjExcel = new Microsoft.Office.Interop.Excel.Application();
                //Книга.
                ObjWorkBook = ObjExcel.Workbooks.Open(openDialog.FileName);
                //Таблица.
                ObjWorkSheet = ObjExcel.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;
                Microsoft.Office.Interop.Excel.Range rg = null;
 
                Int32 row = 1;
               
                while (ObjWorkSheet.get_Range("a" + row, "a" + row).Value != null)
                {
                    // Читаем данные из ячейки
                    List<String> arr = new List<string>();
                    rg = ObjWorkSheet.get_Range("a" + row, "p" + row);
                    foreach (Microsoft.Office.Interop.Excel.Range item in rg)
                    {
                        try
                        {
                            arr.Add(item.Value.ToString().Trim());
                        }
                        catch { arr.Add(""); }
                    }
                    while (TABLE.Columns.Count < arr.Count) { TABLE.Columns.Add(); }
                    TABLE.Rows.Add(arr.ToArray());
                    arr.Clear();
                    row++;
                }
                dataGridView1.DataSource = TABLE;
                MessageBox.Show("Файл успешно считан!", "Считывания excel файла", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex) { MessageBox.Show("Ошибка: " + ex.Message, "Ошибка при считывании excel файла", MessageBoxButtons.OK, MessageBoxIcon.Error); }
            finally
            {
                ObjWorkBook.Close(false, "", null);
                // Закрытие приложения Excel.
                ObjExcel.Quit();
                ObjWorkBook = null;
                ObjWorkSheet = null;
                ObjExcel = null;
                GC.Collect();
           }
            
            this.Text = this.Text + " - " + openDialog.SafeFileName;
            textBox1.Text = openDialog.SafeFileName;
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
 
            TABLE.Columns[15].Expression = "IIF((([Наим. груза] LIKE '*диск*' OR [Наим. груза] LIKE '*авто*' OR [Наим. груза] LIKE '*колес*') AND NOT( [Наим. груза] LIKE '*двд*')), 'Автотовары', 'Остальная хрень')";
            dataGridView1.Invalidate();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            TABLE.Columns.Add  ("ТТН №");
            TABLE.Columns.Add  ("Дата загрузки");
            TABLE.Columns.Add  ("Ст. отправления");
            TABLE.Columns.Add  ("Ст. назначения");
            TABLE.Columns.Add  ("Ст. оплаты");
            TABLE.Columns.Add  ("Наим. груза");
            TABLE.Columns.Add  ("Груз №");
            TABLE.Columns.Add  ("Отправитель");
            TABLE.Columns.Add  ("Получатель");
            TABLE.Columns.Add  ("Адрес отпр.");
            TABLE.Columns.Add  ("Адрес получ.");
            TABLE.Columns.Add  ("Кол-во мест");
            TABLE.Columns.Add  ("Вес");
            TABLE.Columns.Add  ("Объем");
            TABLE.Columns.Add  ("Сумм итого");
            TABLE.Columns.Add  ("Категория");
            bis.DataMember = dataGridView1.DataMember;
            bis.DataSource = TABLE;
 
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            try
            {
                bis.Filter = string.Format("[{0}] LIKE '*{1}*'", TABLE.Columns[Int32.Parse(textBox3.Text)-1].ColumnName, textBox2.Text);
            }
            catch { }
        }
        
    }
}

8   голосов, оценка 3.500 из 5


СОХРАНИТЬ ССЫЛКУ