【发布时间】:2019-10-04 14:56:45
【问题描述】:
是否有一种简单的方法可以使用 Epplus 从代码 (C#) 中删除单行中的多个 excel 列? 我有一个这样的开关:
switch (packageId)
{
case 15:
case 16: wsSheet.DeleteColumn(16);
wsSheet.DeleteColumn(17);
wsSheet.DeleteColumn(18);
wsSheet.DeleteColumn(19);
wsSheet.DeleteColumn(20);
break;
case 17: delete multiple columns again..
break;
...and so on.....
default:
break;
}
...由于我有 15-20 个案例要为每个案例删除多个(不同)行,我真的很想缩短此方法消耗的代码和时间..
为清楚起见,包 ID 与列 ID 没有任何联系。在实际情况下,一个包 id 是 358,下一个是 469,依此类推。如果我找不到更流畅的方法,我将使用带有列索引的循环(我想避免这种情况,因为在单一情况下我可以以 5-6 个循环结束,例如,显示前 15 列,然后删除下 4 列,然后显示下 5 列,然后删除下 3 列,..依此类推,直到索引为 67 的最后一列)
EDIT(我为其他人解决这个问题的解决方案): 方法 DeleteColumn(fromCol, noOfCols) 有一个重载,它删除了在第二个参数中提供的固定数量的列,但我想要“删除从列索引到列索引的所有列”之类的东西,所以我写了一个简单的小方法这样做。
private void DeleteColumns(ExcelWorksheet wsSheet, int fromColumn, int toColumn)
{
for (int i = toColumn; i >= fromColumn; i--)
{
wsSheet.DeleteColumn(fromColumn);
}
}
在这种情况下它对我有用..
【问题讨论】: