C#Excel InterOp:删除第2行下面的所有行

时间:2017-03-13 16:49:36

标签: c# excel interop rows

这应该不难,但到目前为止,我发现的每个解决方案都不起作用。基本上,我使用C#控制台应用程序填充从第3行开始的Excel工作表。人口部分有效,但我需要做的是删除所有行,其数据从第3行开始。到目前为止,这是我的代码:

Excel.Range xlRange = xlWorkSheet.UsedRange;                 
for (int j = 3; j <= xlRange.Rows.Count; j++)
{
   ///  xlRange.Rows[j].EntireRow.Delete(Excel.XlDeleteShiftDirection.xlShiftUp);
        xlRange.Rows[j].Delete(Excel.XlDeleteShiftDirection.xlShiftUp);
 }

注意,注释掉代码和功能代码都会产生类似删除功能的内容。

谢谢!

更新1 看起来以下内容在另一个Excel文件的循环中有效;所以在其他Excel文件上有某种锁定。

  ((Excel.Range)xlWorkSheet.Rows[j]).Delete(Excel.XlDeleteShiftDirection.xlShiftUp);

更新2

所以,是的,奇怪的是原始的XLS文件受密码保护,我还没有密码。该文件允许我编写新值并覆盖现有值并不允许我删除行!!

1 个答案:

答案 0 :(得分:0)

以下对我来说很好,但不适用于所需文件,因为该文件的密码保护,如我的更新&#39;问题。所需文件中有宏,因此我无法简单地使用上传到Google文档等解决方法。

HTH

 ((Excel.Range)xlWorkSheet.Rows[j]).Delete(Excel.XlDeleteShiftDirection.xlShiftUp);