为什么它删除重复单元格作为整个行?

我已经做了一些四处搜寻,我发现的function似乎并没有工作,我期望,我传递错误的参数?

我想使用c#删除Excel电子表格中的所有重复的行logging。

Range theRange = workSheet.UsedRange as Range; theRange.RemoveDuplicates(XlYesNoGuess.xlYes); 

它似乎只是删除行有任何重复的单元格值作为一个整体查看行。

我究竟做错了什么? 当我进入excel,点击数据>>删除重复项,并select所有列,然后它会给我我想要的。 这是做什么的编程方式?

Removeduplicates似乎是相当快,所以我不想做任何forms的循环等。

你的问题一直在困扰着我,我终于明白了!

您需要指定您希望从中删除重复项的列号。

即使您已经指定了范围,您仍然需要指定该列。 描述是误导性的,因为它声称这是可选的,并且表示如果这个是空白的,整个范围将被search重复。 这不是真的。

描述更具误导性,因为它说这可以是一个对象数组。 您可以指定列的唯一方法是通过编号,并将一个整数数组传递到此方法会导致运行时错误。

您传入此方法的第二个布尔参数按预期工作,它允许您声明列中的第一个单元格包含标题。

下面的代码适用于我,关于删除第一列中的重复项:

 using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel; namespace RemoveDupes { class Program { static void Main() { var excel = new Excel.Application(); var workbook = excel.Workbooks.Open(@"C:\Test\Test.xlsx"); Excel.Worksheet worksheet = workbook.Sheets[1]; var usedRange = worksheet.UsedRange; usedRange.RemoveDuplicates(1); workbook.Close(true); Marshal.ReleaseComObject(excel); } } } 
Interesting Posts