C# EPPlus,删除此行中的行和图像
这不会删除此行中的图像。图像是一个小图标,位于单元格内。如果在Excel中手动删除该行,则该行将随该行一起消失 我想先手动删除行的所有图像,然后删除行本身,但是C# EPPlus,删除此行中的行和图像,c#,excel,epplus,C#,Excel,Epplus,这不会删除此行中的图像。图像是一个小图标,位于单元格内。如果在Excel中手动删除该行,则该行将随该行一起消失 我想先手动删除行的所有图像,然后删除行本身,但是 using (var pck = new ExcelPackage(new FileInfo(wb_path))) { ExcelWorksheet ws = pck.Workbook.Worksheets[ws_name]; ws.DeleteRow(3,1,true); pck.Save(); } …这将继
using (var pck = new ExcelPackage(new FileInfo(wb_path)))
{
ExcelWorksheet ws = pck.Workbook.Worksheets[ws_name];
ws.DeleteRow(3,1,true);
pck.Save();
}
…这将继续删除一个图像,然后进入系统。ArgumentOutOfRangeException我认为这是EpPlus的问题。如果您可以删除一个,但无法删除另一个,则可能存在一些索引问题 您可以尝试反转列表并按相反顺序删除
ws.Drawings.Where(r => r.From.Row == 3 && r.To.Row == 3).ToList().ForEach(r => ws.Drawings.Remove(r));
如果您想进一步调查,可以查看GitHub的源代码
这是EPPlus中的ExcelDrawings类
原来是一个ePlus bug。我最终得到了一个VBA宏,它根据提供的索引删除行。此外,Application.ScreenUpdate似乎必须设置为True才能正确删除图像。此链接解决了您的问题:很难,问题是图像没有被删除,而不是行没有被删除
ws.Drawings
.Where(r => r.From.Row == 3 && r.To.Row == 3)
.Reverse()
.ToList()
.ForEach(r => ws.Drawings.Remove(r));