C# таблица EXCEL добавить данные с html

338
19 марта 2017, 03:03

Добрый день дорогие друзья!
Есть задачка не большой сложности, хотелось бы реализовать красиво)
Хочу узнать, сталкивался ли кто нибудь с подобным и какие решения принимали!
Задача:
Есть таблица Excel с данными (код платежа, имя, организация и т.д.), так же есть html файл в котором тоже таблица (код платежа, номер UIN) требуется Запустить программу,

  • Кнопка1: выбрать таблицу excel,

  • Кнопка2: Выбрать файл html,

  • Кнопка3: Обработать данные,
  • Кнопка4: Сохранить таблицу excel

Кнопочки говорят сами за себя, хотелось бы вообще БЕЗ вывода в datagridview и т.д., всякое может быть с данными(захочется потыкать там и внести исправления) делаю, для обработки данных нашей сотруднице, по просьбе конечно))

в результате программа должна сравнивать каждую строку столбца "КОД ПЛАТЕЖА" из excel с "КОД ПЛАТЕЖА" из html, в случае совпадения, из столбца "Номер UIN" из html, добавляется запись в столбец который создастся в EXCEL "Номер UIN" и так по все таблице
мои сложности: не знаю как считать данные, сравнить и записать, а так же сохранить результат в EXCEL таблице

namespace EXCEL
{
    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 Workbook|*.xls", ValidateNames = true })
            {
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    FileStream fs = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read);
                    IExcelDataReader reader = ExcelReaderFactory.CreateBinaryReader(fs);
                    reader.IsFirstRowAsColumnNames = true;
                    result = reader.AsDataSet();
                    comboBox1.Items.Clear();
                    foreach (DataTable dt in result.Tables)
                        comboBox1.Items.Add(dt.TableName);
                    reader.Close();
                }
            }
        }
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            dataGridView1.DataSource = result.Tables[comboBox1.SelectedIndex];
        }
    }
}
Answer 1

Для этой цели могут подойти 2 либы:

  1. EPPlus- библиотека для работы с Excel без использования interop, что повышает производительность
  2. AngleSharp- библиотека для парсинга html.

Грузите с помощью этих библиотек все в память и выполняете сравнение. Библиотеки достаточно популярны и интуитивно понятные.

READ ALSO
Вызов метода из UserControl

Вызов метода из UserControl

День добрый! Мучаюсь который день, может подскажите?

280
Неправильно прописывается путь к файлу

Неправильно прописывается путь к файлу

Пишу веб приложение используя ASPNET MVC

261
Создание игры Pacman на WPF

Создание игры Pacman на WPF

Задумал написать игру (простой PacMan)Сделал Grid сетку 30x30 присвоил нажатию клавиш (стрелочек) методы для перемещения картинки Pacman по гриду: как...

563