我有一个包含许多工作表的excel文件。每个工作表都有5列,但行数不同。我想将每个工作表一个接一个地导入到单个数据表中。因此,如果我的文件包含10个工作表,那么我的数据表应包含50列。 这就是我试过的:
DataTable dt = new DataTable();
int i = 1;
foreach (var ws in pck.Workbook.Worksheets)
{
foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column])
{
dt.Columns.Add(string.Format("Column {0}", firstRowCell.Start.Column) + i); i++;
}
var startRow = hasHeader ? 2 : 1;
for (int rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++)
{
var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
DataRow row = dt.Rows.Add();
foreach (var cell in wsRow)
{
row[cell.Start.Column - 1] = cell.Text;
}
}
}
但是它将最后一行之后的下一个工作表数据放在我的数据表中的最后一列之后。