В настоящее время я пытаюсь прочитать данные из Excel в DataTable в C # с помощью EPPlus.
Основная проблема, с которой я сталкиваюсь в настоящее время, заключается в том, что пустой столбец в Excel не выбирается, когда я заполняю заголовки для DataTable, и из-за этого, когда я пытаюсь загрузить данные в мой DataTable,столбцы испорчены (данные читаются не в тот столбец).
Есть ли способ сопоставить имя столбца в DataTable с именем столбца таблицы Excel, чтобы они правильно отображались?
Данные Excel
| Column 1 | Column 2 | | Column 3 |
| Value | Value | | 123 |
| Value 2 | Value 2 | | 234 |
В моих кодахЯ создаю все заголовки в DataTable из Excel
DataTable dt = new DataTable();
ExcelWorksheet ws = xlPackage.Workbook.Worksheets[worksheetName];
foreach (var firstRowCell in ws.Cells[rowStart, 1, rowStart, ws.Dimension.End.Column])
{
int num = 1;
string header = firstRowCell.Text;
Common.writeLog("header - " + firstRowCell);
if (header.Contains("\n"))
{
header = header.Replace("\n", " ");
}
while (dt.Columns.Contains(header))
{
header = firstRowCell.Text + num;
num++;
if (header.Contains("\n"))
{
header = header.Replace("\n", " ");
}
}
//Common.writeLog("header - " + header);
dt.Columns.Add(header);
}
Заголовок DataTable
Column 1 , Column 2 , Column 3
Далее я прочитаю данные Excel в свой DataTable
int startRow = rowStart + 1;
for (var rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++)
{
var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
var row = dt.NewRow();
foreach (var cell in wsRow)
{
try
{
row[cell.Start.Column - 1] = cell.Value;
}
catch (Exception) { }
}
dt.Rows.Add(row);
}
Текущие данные в DataTable
| Column 1 | Column 2 | Column 3 |
| Value | Value | |
| Value 2 | Value 2 | |