2013-07-10 243 views
1

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

回答

1

这是一种使用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没有所有的其他代码。我使用这种更复杂的方法,因为我有时会在工作表中添加除表格外的其他信息,而且我不希望将其包含在计算中。

1

使用下面的代码

worksheet.Dimension.End.Row 

这应该给上次使用的行信息。