【问题标题】:Insert a row in Excel using EPPlus使用 EPPlus 在 Excel 中插入一行
【发布时间】:2013-07-10 20:53:48
【问题描述】:

我没有看到使用 EPPlus 在现有 excel 文件中插入行的方法。我知道 InsertRow 函数,但这不会在末尾插入行 - 类似于 sql 中的插入语句。如果这不可能,我将如何在 excel 文件中找到最后使用的行。

【问题讨论】:

    标签: c# excel epplus


    【解决方案1】:

    使用以下代码

    worksheet.Dimension.End.Row
    

    这应该给出最后使用的行信息。

    【讨论】:

    • 无论你做什么,都不要把它误认为是 worksheet.Dimension.Rows。后者将跳过工作表开头的空白行,如果您先写入数据然后再写入标题,这真的会让您搞砸!
    【解决方案2】:

    这是一种使用 EPPlus 在 Excel 工作表中查找表格中最后一个单元格的方法。

    private ExcelRange GetLastContiguousCell(ExcelRange beginCell)
    {
        var worksheet = beginCell.Worksheet;
        var beginCellAddress = new ExcelCellAddress(beginCell.Start.Row, beginCell.Start.Column);
        var lastCellAddress = worksheet.Dimension.End;
        var bottomCell = worksheet.Cells[beginCellAddress.Row, beginCellAddress.Column, lastCellAddress.Row, beginCellAddress.Column]
            .First(cell => cell.Offset(1, 0).Value == null);
        var rightCell = worksheet.Cells[beginCellAddress.Row, beginCellAddress.Column, beginCellAddress.Row, lastCellAddress.Column]
            .First(cell => cell.Offset(0, 1).Value == null);
        return worksheet.Cells[bottomCell.Start.Row, rightCell.Start.Column];
    }
    

    但是,重要的一点是,这是假设第一行和第一列中没有间隙。我将此方法用于第一行用于列标题(不能为空)并且第一列是主要Id 列(也不能为空)的情况。如果您的情况与此不同,您将不得不调整该方法,但希望它仍然会有所帮助。

    编辑

    我突然想到,您也许可以在没有其他所有代码的情况下使用worksheet.Dimension.End。我使用这种更复杂的方法是因为我有时会将除表格之外的其他信息放入工作表中,并且我不希望将其包含在计算中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多