我已经做了一些搜索并且我找到的功能似乎没有按照我的预期工作,我是否传递了错误的参数?
我想使用c#删除Excel电子表格中的所有重复行条目。
Range theRange = workSheet.UsedRange as Range;
theRange.RemoveDuplicates(XlYesNoGuess.xlYes);
它似乎只是删除具有任何重复单元格值的行,并将其作为一个整体查看行。
我做错了什么?当我进入excel并点击Data>>删除重复项并选择所有列然后它将给我我想要的。什么是编程方式?
Removeduplicates
似乎相当快,所以我不想做任何类型的循环等。
答案 0 :(得分:3)
你的问题一直困扰着我,我终于明白了!
您需要指定要从中删除重复项的列号。
即使您已经指定了范围,仍然需要指定列。该描述具有误导性,因为它将其声明为可选,并指示如果将其留空,则将搜索整个范围的重复项。事实并非如此。
描述更具误导性,因为它说这可以是一个对象数组。您可以指定列的唯一方法是按编号,并将整数数组传递给此方法会导致运行时错误。
传递给此方法的第二个布尔参数按预期工作,它允许您声明列中的第一个单元格包含标题。
以下代码适用于我从第一列中删除重复项:
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);
}
}
}