当前,我正在尝试使用EPPlus将数据从excel读取到C#中的DataTable中。
我当前面临的主要问题是,当我填充DataTable的标题时,excel中的空列没有被拾取,因此,当我尝试将数据加载到DataTable中时,这些列会被拧紧向上(数据读入错误的列)。
是否可以用Excel工作表的列名映射DataTable中的列名,以便它们正确填充?
Excel数据
| Column 1 | Column 2 | | Column 3 |
| Value | Value | | 123 |
| Value 2 | Value 2 | | 234 |
在我的代码中,我通过Excel在DataTable中创建所有标题
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数据读入我的数据表
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);
}
数据表中的当前数据
| Column 1 | Column 2 | Column 3 |
| Value | Value | |
| Value 2 | Value 2 | |