Как сравнить строки в excel с строками в таблице mysql и потом удалить те строки в Excel, которые уже есть в базе данных
Пытаюсь сделать следующую систему:
- Получаем путь к файлу Excel (с помощью "открыть файл, через программу") — сделано
- Проверить в этом файле Excel строки на схожесть с строками в базе данных MySQL — не сделано
- Вывести в таблицу DataGridView строки, которых нет в базе данных и загрузить их в базу данных — не сделано
- Если строки будут одинаковы (в таблице и в mysql базе), тогда удаляем эти строки из таблицы excel.
На данный момент я переделал код из спагетти, на более красивый и разбил по классам.
Проблема реализации в том, что я с таким еще не сталкивался, научился только открывать Excel в DataGridView, но такая реализация не позволит сравнивать строки Excel со строками в базе данных.
Даже примерно не представляю как такое сотворить, буду благодарен за любую инфорамацию.
Мой код:
// FileReader.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
namespace minusator_release
{
class FileReader
{
string filePath = string.Empty;
string fileExt = string.Empty;
public string OpenFile()
{
using (OpenFileDialog file = new OpenFileDialog()
{ Filter = "Excel Workbook|*.xlsx" +
"|Excel 97-2003 Workbook|*.xls", Multiselect=false })
{
if (file.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
filePath = file.FileName; // get the pass of the file
fileExt = Path.GetExtension(filePath); // get the file extension
try
{
Excel excel = new Excel(filePath, 1);
MessageBox.Show(excel.ReadCell(1, 1));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
}
return filePath;
}
public string _getFilePath()
{
string fpath = filePath;
return fpath.ToString();
}
}
}
// excel .cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Excel;
using _Excel = Microsoft.Office.Interop.Excel;
namespace minusator_release
{
class Excel
{
string path = string.Empty;
_Application excel = new _Excel.Application();
Workbook wb;
Worksheet ws;
public Excel(string path, int Sheet)
{
this.path = path;
excel = new _Excel.Application();
excel.ScreenUpdating = false;
wb = excel.Workbooks.Open(path);
ws = wb.Worksheets[Sheet];
}
public string ReadCell(int i, int j)
{
i++;
j++;
if (ws.Cells[i, j].Value2 != null)
return ws.Cells[i, j].Value2;
else
return "";
}
}
}
form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace minusator_release
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
lblMinusatorOnDisplay.Text = "Здесь будет показана таблица Excel до операции \"Проминусовать\"";
}
// load table
private void btnTableLoad_Click(object sender, EventArgs e)
{
FileReader fr = new FileReader();
string path = fr.OpenFile();
}
}
}