【问题标题】:Read Excel file without headers ASP.Net读取没有标题 ASP.Net 的 Excel 文件
【发布时间】:2017-01-30 01:46:20
【问题描述】:

我正在尝试关注this code 来阅读 Excel 文件。不幸的是,我无法让它工作,因为我需要读取没有标题的 Excel 文件。如何读取没有标题的 Excel 文件?

public static DataTable ToDataTable(this ExcelPackage package)
    {
        ExcelWorksheet workSheet = package.Workbook.Worksheets.First();
        DataTable table = new DataTable();


        foreach (var firstRowCell in workSheet.Cells[1, 1, 1, workSheet.Dimension.End.Column])
        {
            table.Columns.Add(firstRowCell.Text);
        }

        for (var rowNumber = 2; rowNumber <= workSheet.Dimension.End.Row; rowNumber++)
        {
            var row = workSheet.Cells[rowNumber, 1, rowNumber, workSheet.Dimension.End.Column];
            var newRow = table.NewRow();
            foreach (var cell in row)
            {
                    newRow[cell.Start.Column-1] = cell.Text;
            }
            table.Rows.Add(newRow);  
        }
        return table;
    }

【问题讨论】:

标签: c# asp.net


【解决方案1】:

您可以在for 语句中看到它从第二行开始循环(跳过标题),您需要从第一行开始循环(因为没有标题行),如下所示:

var rowNumber = 1

如果您的数据在第一行是空的,那么请添加您希望文件中有多少列:

// Notice I replaced workSheet.Dimension.End.Column with 6, because I am expecting 6 columns.
foreach (var firstRowCell in workSheet.Cells[1, 1, 1, 6])
{
    table.Columns.Add(firstRowCell.Text);
}

【讨论】:

  • 已将其更改为 1,但它给了我一个错误,提示找不到第 0 列。
  • 第 30 行:newRow[cell.Start.Column - 1] = cell.Text;
  • 基本上excel文件的结构是第一行是空的。
【解决方案2】:

我能够解决这个问题。我自动添加了列。将 foreach 改为 for 循环。

for (int x = 0; x <= workSheet.Dimension.End.Column; x++)
        {
            table.Columns.Add(x.ToString());
        }

【讨论】:

    猜你喜欢
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 2020-03-18
    • 1970-01-01
    • 2017-02-20
    相关资源
    最近更新 更多