【问题标题】:C# EPPlus delete row from excel sheetC# EPPlus 从 excel 表中删除行
【发布时间】:2016-08-16 17:40:05
【问题描述】:

我目前正在处理一个 Excel 文件,该文件的前导行包含我不需要的信息。这些额外的行也会在下面的标题行中导入该数据。所以我试图删除它们以处理数据。

using (var pack = new ExcelPackage(myFileInfo))
{
    // Should return the sheet name
    var ws = pack.Workbook.Worksheets.FirstOrDefault();
    // Should Delete rows 1-5 and shift up the rows after deletion
    ws.DeleteRow(1,5,true);
}

我在想像上面这样的东西会起作用,但我并没有取得太大的成功。

目标是删除第 1-5 行,将其余数据向上移动(也许合并会起作用?),然后将其转换为数据表。

任何人都有关于从我的 excel 表中删除行的提示或资源(在将其移动到数据表之前,因为这是问题发生的地方)

【问题讨论】:

  • 听起来你需要为初学者使用 foreach.. 在C# EPPLUS Delete row from excel上进行谷歌搜索
  • @MethodMan 我不相信我需要使用 Foreach,因为 docs 表明我可以删除并向上移动它。
  • 那么您在代码中的哪个位置使用正确的方法重载从EPLUS Documentation DeleteRow method中删除行
  • 只需添加参数 1,5 => DeleteRow(1,5)
  • @CSharpie 我非常接近这个建议,目前我正试图弄清楚为什么我的变量 ws 为空。 var ws = myExcelPackage.Workbook.Worksheets.FirstOrDefault();应该给它一个合适的值,我会假设...

标签: c# excel epplus


【解决方案1】:

您拥有的代码将删除前 5 行,但您还需要对修改后的文件执行一些操作。您可以将其保存在适当的位置:

pack.Save();

或使用以下命令保存到新位置:

pack.SaveAs(new FileInfo(outputFilePath));

我已经上传了一个完整的例子here

static void Main(string[] args)
{
    var myFileInfo = new FileInfo("Demo.xlsx");
    using (var pack = new ExcelPackage(myFileInfo))
    {
        var ws = pack.Workbook.Worksheets.FirstOrDefault();
        ws.DeleteRow(1, 5, true);
        pack.SaveAs(new FileInfo("output.xlsx"));
    }
}

如果您构建并运行该解决方案,您可以看到它从输入文件 (Demo.xlsx) 中转换了演示文件:

输出文件中的这个:

删除前 5 行,所有内容都向上移动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多