我试图通过选择所有单元格从excel表中删除重复项.所以我知道如何处理一个列.但我想用整张纸做.
这就是我尝试过的:
private void RemoveDuplicateRecords() { try { var ar = new int[0]; foreach (Excel.Worksheet worksheet in bookDest.Worksheets) { if (worksheet.AutoFilter != null) worksheet.AutoFilterMode = false; int n = worksheet.UsedRange.Columns.Count; ar = new int[n]; for (int i = 0; i < n;) { ar[i] = ++i; } object cols = new object[] { ar }; //isn't working Excel.Range range = worksheet.UsedRange; range.Select(); range.Activate(); range.RemoveDuplicates(cols,Excel.XlYesNoGuess.xlYes); //Also tried: //range.RemoveDuplicates((object)ar,Excel.XlYesNoGuess.xlYes); //but no luck } } catch(Exception e) { MessageBox.Show(e.Message); } }
我知道如果我有5列,我可以这样做:object cols = new object [] {1,2,3,4,5};
解决方法
我想这应该有效:
//To remove all the duplicate lines in the result file private void RemoveDuplicateRecords() { try { foreach (Excel.Worksheet worksheet in bookDest.Worksheets) { if (worksheet.AutoFilter != null) worksheet.AutoFilterMode = false; long n = worksheet.UsedRange.Columns.Count; Excel.Range range = worksheet.UsedRange; range.Select(); range.Activate(); range.RemoveDuplicates(BuildColAry(n),Excel.XlYesNoGuess.xlYes); } } catch(Exception e) { MessageBox.Show(e.Message); } } dynamic BuildColAry(long n) { dynamic vMyArray = new dynamic[n]; int idx; for (idx = 1; idx <= n; idx++) { vMyArray[idx - 1] = idx; } return vMyArray; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。