بإمكانك تغيير طريقة لقراءة ملفات اكسل لجلب البيانات كما هي دون تحويل أي شيء من البيانات اكسل....وتخزينها ضمن كائن (مجموعة من الجداول: DataTableCollection) أي لكل صفحة (Sheet) تكون لجدول واحد (DataTable)...
أولاً...تعريف كائن من نوع DataTableCollection :
public DataTableCollection tableCollection;
ثانياً...ميثود لفتح ملف Excel وتخزينه ضمن الكائن السابق :
public bool FileOpen()
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "EXCEL xlsx|*.xlsx|EXCEL xlsm|*.xlsm|EXCEL xltm|*.xltm|EXCEL xltx|*.xltx|AllFormat|*.xlsx;*.xltm;*.xlsm;*.xltx;";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
fileName = openFileDialog.FileName;
using (var stream = File.Open(openFileDialog.FileName, FileMode.Open, FileAccess.Read))
{
using (IExcelDataReader reader = ExcelReaderFactory.CreateReader(stream))
{
DataSet result = reader.AsDataSet(new ExcelDataSetConfiguration()
{
ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
{
UseHeaderRow = true
}
});
tableCollection = result.Tables;
}
return true;
}
}
return false;
}
ثالثاً....لعرض "أول" جدول واحد من المجموعة الجداول ضمن DataGridView :
DataGridView.DataSource = tableCollection[0];