C# 和 Excel 高级过滤器

标签 c# excel

我正在尝试将数据从一个工作簿过滤到另一个工作簿,但我得到了一个不明确的异常。

我找不到很多使用 c# 在 excel 中进行高级过滤的示例,而且我不知道我的错误到底在哪里。

这是我的代码:

public void excel()
    {
        Excel.Application xlApp;
        Excel.Workbook xlWorkBookImport;
        Excel.Workbook xlWorkBookOriginal;
        Excel.Worksheet xlWorkSheetImport;
        Excel.Worksheet xlWorkSheetOriginal;

        xlApp = new Excel.ApplicationClass();
        xlWorkBookImport = xlApp.Workbooks.Open("c:/open.xls");
        xlWorkBookOriginal = xlApp.Workbooks.Open("c:/open1.xls");
        xlWorkBookOriginal.Activate();
        xlWorkSheetOriginal = (Excel.Worksheet)xlWorkBookOriginal.Worksheets.get_Item(1);
        xlWorkSheetOriginal.get_Range("1:7").Delete();
        xlWorkBookImport.Activate();
        xlWorkSheetImport = (Excel.Worksheet)xlWorkBookImport.Worksheets.get_Item(1);
        xlWorkSheetOriginal.Cells.AdvancedFilter(Excel.XlFilterAction.xlFilterCopy, Type.Missing, CopyToRange: "a1:a6", Unique: true);

        xlApp.Visible = true;
    }

谁能帮我解决一下?

最佳答案

最后我自己弄明白了:

public void excel()
{         
Excel.Application xlApp;         
Excel.Workbook xlWorkBookImport;         
Excel.Workbook xlWorkBookOriginal;         
Excel.Worksheet xlWorkSheetImport;         
Excel.Worksheet xlWorkSheetOriginal;          
xlApp = new Excel.ApplicationClass();         
xlWorkBookImport = xlApp.Workbooks.Open("c:/open.xls");         
xlWorkBookOriginal = xlApp.Workbooks.Open("c:/open1.xls");             
xlWorkBookOriginal.Activate();         
xlWorkSheetOriginal = (Excel.Worksheet)xlWorkBookOriginal.Worksheets.get_Item(1);         
xlWorkSheetOriginal.get_Range("1:7").Delete(); 
// added code
Excel.Range range = xlWorkSheetOriginal.get_Range("a1:v53");  
//  
xlWorkBookImport.Activate(); 
xlWorkSheetImport = (Excel.Worksheet)xlWorkBookImport.Worksheets.get_Item(1);
// added code
xlWorkSheetImport.Activate();
Excel.Range target = xlWorkSheetImport.get_Range("a1:f1"); 
//
// modified code            
xlWorkSheetOriginal.Cells.AdvancedFilter(Action : Excel.XlFilterAction.xlFilterCopy, 
CriteriaRange: Type.Missing, CopyToRange: target, Unique: false);
//          
xlApp.Visible = true;     
} 

关于C# 和 Excel 高级过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8519948/

相关文章:

c# - 如何根据键值获取在文本文件中输入的记录

c# - Activator.CreateInstance() - 找不到构造函数

mysql - 有没有办法计算 MySQL 中列中所有尾随零的数量?

java - 如何使用 POI 将单元格注释添加到 Excel 工作表?

c# - ASP.NET 核心 : calling a view component does not respect authorization attribute

c# - 为高对比度主题重新设计 AvalonDock?

C#递归计算值

java - 如何在更改某些单元格后使用 POI 读取 Excel 公式的结果

ios - iOS拖放后如何保存Excel xlsx

excel - 贾斯珀报告 : Unmerge columns in new excel sheet