c# - EPPlus,删除该行中的行和图像

标签 c# excel epplus

using (var pck = new ExcelPackage(new FileInfo(wb_path)))
{
    ExcelWorksheet ws = pck.Workbook.Worksheets[ws_name];
    ws.DeleteRow(3,1,true);
    pck.Save();
}

这不会删除位于该行中的图像。该图像是一个小图标,适合一个单元格。如果在 Excel 中手动删除了行,则它与行一起消失了。

我考虑过先手动删除该行的所有图像,然后再删除该行本身,但是......
 ws.Drawings.Where(r => r.From.Row == 3 && r.To.Row == 3).ToList().ForEach(r => ws.Drawings.Remove(r)); 

...这继续删除一个图像,然后陷入 System.ArgumentOutOfRangeException

最佳答案

我认为这是 EpPlus 的问题。如果您可以删除一个,而不能删除另一个,则可能存在一些索引问题。

您可以尝试反转列表并以相反的顺序删除。

ws.Drawings
    .Where(r => r.From.Row == 3 && r.To.Row == 3)
    .Reverse()
    .ToList()
    .ForEach(r => ws.Drawings.Remove(r));

如果您想进一步调查,可以查看 GitHub 的源代码。

这是 EPPlus 中的 ExcelDrawings 类。

https://github.com/JanKallman/EPPlus/blob/master/EPPlus/Drawing/ExcelDrawings.cs

关于c# - EPPlus,删除该行中的行和图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61843748/

相关文章:

c# - 如何获取ThreadContext类中的MethodInfo?

c# - DateTimeOffset 的 WCF 服务引用?不使用 FCL 类型

excel - 将某个字符串从一列中的excel单元格复制到另一列

vba - Excel VBA - 我可以操作另一个工作簿上的数据吗?

c# - 使用 EPPlus 设置折线图使用的数据

来自单个 Excel 单元格列表的 EPPlus 图表。如何?

c# - 如何在C#.net中使用Vscrollbar滚动pdf文档?

c# - 如何获取当前 C# 源代码文件的路径?

VBA 比较变量

c# - epplus公式错误