最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#代碼實(shí)現(xiàn)在Excel中為數(shù)據(jù)透視表添加篩選器

 更新時間:2026年05月19日 08:24:16   作者:2501_93070778  
數(shù)據(jù)透視表中的篩選功能可幫助用戶根據(jù)特定條件縮小顯示的數(shù)據(jù)范圍,本文將演示如何在?C#?中為?Excel?數(shù)據(jù)透視表添加篩選器,希望對大家有所幫助

數(shù)據(jù)透視表中的篩選功能可幫助用戶根據(jù)特定條件縮小顯示的數(shù)據(jù)范圍。通過添加篩選器,用戶可以聚焦于與分析目標(biāo)最相關(guān)的數(shù)據(jù)子集,從而更高效、更有針對性地進(jìn)行數(shù)據(jù)分析與探索。本文將演示如何在 C# 中為 Excel 數(shù)據(jù)透視表添加篩選器。

環(huán)境準(zhǔn)備

開始之前,需要在 .NET 項(xiàng)目中添加相關(guān) Excel 處理庫的 DLL 引用。您可以通過下載安裝包手動引用 DLL,也可以直接通過 NuGet 安裝所需組件。

PM> Install-Package Spire.XLS

在 C# 中為 Excel 數(shù)據(jù)透視表添加報表篩選器

通過 Excel 操作組件提供的相關(guān) API,可以輕松為數(shù)據(jù)透視表添加報表篩選器。具體步驟如下:

  1. 創(chuàng)建 Workbook 類的對象。
  2. 使用 Workbook.LoadFromFile() 方法加載 Excel 文件。
  3. 通過 Workbook.Worksheets[index] 屬性獲取指定工作表。
  4. 使用 Worksheet.PivotTables[index] 屬性獲取指定的數(shù)據(jù)透視表。
  5. 使用 PivotReportFilter 類創(chuàng)建報表篩選器。
  6. 調(diào)用 XlsPivotTable.ReportFilters.Add() 方法將篩選器添加到數(shù)據(jù)透視表中。
  7. 使用 Workbook.SaveToFile() 方法保存結(jié)果文件。

完整示例代碼如下:

using Spire.Xls;
using Spire.Xls.Core.Spreadsheet.PivotTables;

namespace AddReportFilter
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 Workbook 類對象
            Workbook workbook = new Workbook();

            // 加載 Excel 文件
            workbook.LoadFromFile("Sample.xlsx");

            // 獲取第一個工作表
            Worksheet sheet = workbook.Worksheets[0];

            // 獲取第一個數(shù)據(jù)透視表
            XlsPivotTable pt = sheet.PivotTables[0] as XlsPivotTable;

            // 創(chuàng)建報表篩選器
            PivotReportFilter reportFilter = new PivotReportFilter("Product", true);

            // 將報表篩選器添加到數(shù)據(jù)透視表
            pt.ReportFilters.Add(reportFilter);

            // 保存結(jié)果文件
            workbook.SaveToFile("AddReportFilter.xlsx", FileFormat.Version2016);

            workbook.Dispose();
        }
    }
}

在 C# 中為 Excel 數(shù)據(jù)透視表的行字段添加篩選器

可以為數(shù)據(jù)透視表中的指定行字段添加“值篩選”或“標(biāo)簽篩選”,從而更靈活地篩選和分析數(shù)據(jù)。具體步驟如下:

  1. 創(chuàng)建 Workbook 類對象。
  2. 使用 Workbook.LoadFromFile() 方法加載 Excel 文件。
  3. 通過 Workbook.Worksheets[index] 屬性獲取指定工作表。
  4. 使用 Worksheet.PivotTables[index] 屬性獲取指定的數(shù)據(jù)透視表。
  5. 調(diào)用 XlsPivotTable.RowFields[index].AddValueFilter()XlsPivotTable.RowFields[index].AddLabelFilter() 方法,為指定行字段添加值篩選或標(biāo)簽篩選。
  6. 使用 XlsPivotTable.CalculateData() 方法重新計算數(shù)據(jù)透視表數(shù)據(jù)。
  7. 使用 Workbook.SaveToFile() 方法保存結(jié)果文件。

完整示例代碼如下:

using Spire.Xls;
using Spire.Xls.Core.Spreadsheet.PivotTables;

namespace AddRowFilter
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 Workbook 類對象
            Workbook workbook = new Workbook();

            // 加載 Excel 文件
            workbook.LoadFromFile("Sample.xlsx");

            // 獲取第一個工作表
            Worksheet sheet = workbook.Worksheets[0];

            // 獲取第一個數(shù)據(jù)透視表
            XlsPivotTable pt = sheet.PivotTables[0] as XlsPivotTable;

            // 為數(shù)據(jù)透視表中的第一個行字段添加值篩選
            pt.RowFields[0].AddValueFilter(
                PivotValueFilterType.GreaterThan,
                pt.DataFields[0],
                5000,
                null);

            // 或?yàn)閿?shù)據(jù)透視表中的第一個行字段添加標(biāo)簽篩選
            //pt.RowFields[0].AddLabelFilter(PivotLabelFilterType.Equal, "Mike", null);

            // 重新計算數(shù)據(jù)透視表數(shù)據(jù)
            pt.CalculateData();

            // 保存結(jié)果文件
            workbook.SaveToFile("AddRowFilter.xlsx", FileFormat.Version2016);

            workbook.Dispose();
        }
    }
}

在 C# 中為 Excel 數(shù)據(jù)透視表的列字段添加篩選器

可以為數(shù)據(jù)透視表中的指定列字段添加“值篩選”或“標(biāo)簽篩選”,以便更精準(zhǔn)地控制數(shù)據(jù)顯示內(nèi)容。具體步驟如下:

  1. 創(chuàng)建 Workbook 類對象。
  2. 使用 Workbook.LoadFromFile() 方法加載 Excel 文件。
  3. 通過 Workbook.Worksheets[index] 屬性獲取指定工作表。
  4. 使用 Worksheet.PivotTables[index] 屬性獲取指定的數(shù)據(jù)透視表。
  5. 調(diào)用 XlsPivotTable.ColumnFields[index].AddValueFilter()XlsPivotTable.ColumnFields[index].AddLabelFilter() 方法,為指定列字段添加值篩選或標(biāo)簽篩選。
  6. 使用 XlsPivotTable.CalculateData() 方法重新計算數(shù)據(jù)透視表數(shù)據(jù)。
  7. 使用 Workbook.SaveToFile() 方法保存結(jié)果文件。

完整示例代碼如下:

using Spire.Xls;
using Spire.Xls.Core.Spreadsheet.PivotTables;

namespace AddColumnFilter
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 Workbook 類對象
            Workbook workbook = new Workbook();

            // 加載 Excel 文件
            workbook.LoadFromFile("Sample.xlsx");

            // 獲取第一個工作表
            Worksheet sheet = workbook.Worksheets[0];

            // 獲取第一個數(shù)據(jù)透視表
            XlsPivotTable pt = sheet.PivotTables[0] as XlsPivotTable;

            // 為數(shù)據(jù)透視表中的第一個列字段添加標(biāo)簽篩選
            pt.ColumnFields[0].AddLabelFilter(
                PivotLabelFilterType.Equal,
                "Laptop",
                null);

            // 或?yàn)閿?shù)據(jù)透視表中的第一個列字段添加值篩選
            // pt.ColumnFields[0].AddValueFilter(
            //     PivotValueFilterType.Between,
            //     pt.DataFields[0],
            //     5000,
            //     10000);

            // 重新計算數(shù)據(jù)透視表數(shù)據(jù)
            pt.CalculateData();

            // 保存結(jié)果文件
            workbook.SaveToFile("AddColumnFilter.xlsx", FileFormat.Version2016);

            workbook.Dispose();
        }
    }
}

知識擴(kuò)展

在Excel數(shù)據(jù)透視表中,添加篩選器本質(zhì)上就是將數(shù)據(jù)源中的某個字段放入數(shù)據(jù)透視表的 報表篩選區(qū)域(Page Fields / Report Filter)。以下使用主流Excel操作庫的C#代碼示例。

1.使用 Spire.XLS(推薦,無需安裝Excel)

Spire.XLS是國內(nèi)團(tuán)隊(duì)開發(fā)的專業(yè)Excel處理庫,無需安裝Microsoft Office,API設(shè)計簡潔。

安裝

通過NuGet安裝:

Install-Package Spire.XLS

添加報表篩選器(Report Filter)

using Spire.Xls;
using Spire.Xls.Core.Spreadsheet.PivotTables;

class Program
{
    static void Main(string[] args)
    {
        // 1. 創(chuàng)建Workbook對象并加載Excel文件
        Workbook workbook = new Workbook();
        workbook.LoadFromFile("Sample.xlsx");

        // 2. 獲取第一個工作表
        Worksheet sheet = workbook.Worksheets[0];

        // 3. 獲取第一個數(shù)據(jù)透視表
        XlsPivotTable pt = sheet.PivotTables[0] as XlsPivotTable;

        // 4. 創(chuàng)建報表篩選器(指定字段名和是否自動添加所有項(xiàng))
        PivotReportFilter reportFilter = new PivotReportFilter("Product", true);

        // 5. 添加篩選器到數(shù)據(jù)透視表
        pt.ReportFilters.Add(reportFilter);

        // 6. 保存文件
        workbook.SaveToFile("AddReportFilter.xlsx", FileFormat.Version2016);
        workbook.Dispose();
    }
}

上述代碼將數(shù)據(jù)源中的"Product"字段添加到數(shù)據(jù)透視表的篩選器區(qū)域。

為行字段添加值篩選或標(biāo)簽篩選

如果需要更精細(xì)的篩選(如"銷售額大于10000"),可以為指定行字段添加值篩選:

using Spire.Xls;
using Spire.Xls.Core.Spreadsheet.PivotTables;

class Program
{
    static void Main(string[] args)
    {
        Workbook workbook = new Workbook();
        workbook.LoadFromFile("Sample.xlsx");

        Worksheet sheet = workbook.Worksheets[0];
        XlsPivotTable pt = sheet.PivotTables[0] as XlsPivotTable;

        // 為第一個行字段添加值篩選:篩選出銷售額大于10000的數(shù)據(jù)
        pt.RowFields[0].AddValueFilter(
            PivotFilterType.GreaterThan,  // 篩選條件:大于
            "Sum of Amount",               // 值字段名稱
            10000                          // 閾值
        );

        // 重新計算數(shù)據(jù)
        pt.CalculateData();

        workbook.SaveToFile("AddValueFilter.xlsx", FileFormat.Version2016);
        workbook.Dispose();
    }
}

也可以添加標(biāo)簽篩選(如"產(chǎn)品名稱包含'A'"):

// 為行字段添加標(biāo)簽篩選:篩選出產(chǎn)品名稱包含"P"的數(shù)據(jù)
pt.RowFields[0].AddLabelFilter(PivotFilterType.Contains, "P");

2.使用 Microsoft.Office.Interop.Excel(需要安裝Excel)

這是最傳統(tǒng)的方式,需要系統(tǒng)安裝Microsoft Office Excel,適合Windows平臺。

安裝

在項(xiàng)目中添加COM引用:右鍵項(xiàng)目 → 添加引用 → COM → 選擇 Microsoft Excel XX.X Object Library。

添加報表篩選器示例

using Excel = Microsoft.Office.Interop.Excel;

class Program
{
    static void Main(string[] args)
    {
        // 1. 創(chuàng)建Excel應(yīng)用程序?qū)ο?
        Excel.Application excelApp = new Excel.Application();
        excelApp.Visible = false;

        // 2. 打開工作簿
        Excel.Workbook workbook = excelApp.Workbooks.Open(@"C:\Sample.xlsx");

        // 3. 獲取工作表和數(shù)據(jù)透視表
        Excel.Worksheet worksheet = workbook.Sheets["Sheet1"];
        Excel.PivotTable pivotTable = worksheet.PivotTables("PivotTable1");

        // 4. 獲取要作為篩選器的字段并設(shè)置其方向?yàn)閳蟊砗Y選區(qū)域(Page Field)
        Excel.PivotField filterField = pivotTable.PivotFields("Product");
        filterField.Orientation = Excel.XlPivotFieldOrientation.xlPageField;
        filterField.Position = 1;

        // 5. 可選:允許多選
        filterField.EnableMultiplePageItems = true;

        // 6. 設(shè)置篩選值(例如只顯示"TV")
        filterField.ClearAllFilters();
        filterField.CurrentPage = "TV";

        // 7. 刷新數(shù)據(jù)透視表
        pivotTable.RefreshTable();

        // 8. 保存并退出
        workbook.Save();
        workbook.Close();
        excelApp.Quit();
    }
}

關(guān)鍵點(diǎn)說明:

  • Orientation = xlPageField:將字段放置到報表篩選區(qū)域
  • CurrentPage:設(shè)置當(dāng)前選中的篩選值
  • EnableMultiplePageItems = true:允許多選(默認(rèn)為單選)

3.使用 Aspose.Cells(功能強(qiáng)大,無需安裝Excel)

Aspose.Cells是成熟的商業(yè)Excel處理方案,功能全面。

安裝

Install-Package Aspose.Cells

添加篩選器示例

using Aspose.Cells;
using Aspose.Cells.Pivot;

class Program
{
    static void Main(string[] args)
    {
        // 1. 加載工作簿
        Workbook workbook = new Workbook("Sample.xlsx");

        // 2. 獲取數(shù)據(jù)透視表
        PivotTable pivotTable = workbook.Worksheets[0].PivotTables[0];

        // 3. 添加頁面字段(篩選器)
        pivotTable.AddFieldToArea(PivotFieldType.Page, pivotTable.Fields["Product"]);

        // 4. 可選:設(shè)置當(dāng)前篩選選項(xiàng)
        PivotField pageField = pivotTable.PageFields[0];
        pageField.ClearAllFilters();

        // 要篩選的值
        pageField.AddPageItem("TV");

        // 5. 刷新數(shù)據(jù)并保存
        pivotTable.RefreshData();
        pivotTable.CalculateData();
        workbook.Save("Output.xlsx");
    }
}

按索引和名稱顯示報表篩選頁面

Aspose.Cells還提供了ShowReportFilterPage系列方法,可以將報表篩選器的每一項(xiàng)輸出為獨(dú)立工作表:

// 根據(jù)字段顯示報表篩選頁面
pivotTable.ShowReportFilterPage(pivotTable.PageFields[0]);

// 根據(jù)索引顯示
pivotTable.ShowReportFilterPageByIndex(pivotTable.PageFields[0].Position);

// 根據(jù)名稱顯示
pivotTable.ShowReportFilterPageByName(pivotTable.PageFields[0].Name);

4.使用 EPPlus(開源免費(fèi),需注意版本限制)

EPPlus是開源免費(fèi)庫(5.x及以下版本),但添加報表篩選器的功能支持有限。

安裝

Install-Package EPPlus

添加篩選器示例

using OfficeOpenXml;
using OfficeOpenXml.Table.PivotTable;

class Program
{
    static void Main(string[] args)
    {
        using (var package = new ExcelPackage(new FileInfo("Sample.xlsx")))
        {
            var worksheet = package.Workbook.Worksheets[0];
            var pivotTable = worksheet.PivotTables[0];

            // 獲取要作為篩選器的字段
            var pivotField = pivotTable.Fields["Product"];

            // 添加為報表篩選區(qū)域
            pivotTable.PageFields.Add(pivotField);

            // 保存文件
            package.Save();
        }
    }
}

局限性提醒:有開發(fā)者反饋EPPlus對PageFields功能支持不夠完善,上述代碼可能需要根據(jù)實(shí)際版本調(diào)整。如果需要可靠的篩選器功能,建議使用Spire.XLS或Aspose.Cells。

各方案對比

方案是否需要安裝Excel收費(fèi)情況優(yōu)點(diǎn)適合場景
Spire.XLS?商業(yè)(有免費(fèi)版)API簡潔,功能完整,無需安裝Office絕大多數(shù)場景,推薦
Interop?免費(fèi)(需要Excel授權(quán))原生控制,支持所有Excel功能Windows環(huán)境且已安裝Excel的項(xiàng)目
Aspose.Cells?商業(yè)功能最強(qiáng)大,企業(yè)級支持大規(guī)模/復(fù)雜報表處理需求
EPPlus?開源免費(fèi)(5.x)免費(fèi)開源,輕量簡單場景,可接受功能限制

總結(jié)

通過為 Excel 數(shù)據(jù)透視表添加報表篩選器、行字段篩選器以及列字段篩選器,可以更加靈活地控制和分析數(shù)據(jù)內(nèi)容。本文演示了如何在 C# 中使用相關(guān) API 為數(shù)據(jù)透視表設(shè)置不同類型的篩選條件,包括值篩選和標(biāo)簽篩選,并介紹了重新計算數(shù)據(jù)透視表及保存結(jié)果文件的方法。借助這些功能,開發(fā)者可以更高效地實(shí)現(xiàn) Excel 數(shù)據(jù)的自動化篩選與分析,提升數(shù)據(jù)處理效率和報表的可讀性。

到此這篇關(guān)于C#代碼實(shí)現(xiàn)在Excel中為數(shù)據(jù)透視表添加篩選器的文章就介紹到這了,更多相關(guān)C# Excel添加篩選器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • WPF實(shí)現(xiàn)動態(tài)加載圖片瀏覽器

    WPF實(shí)現(xiàn)動態(tài)加載圖片瀏覽器

    這篇文章主要為大家詳細(xì)介紹了一種?WPF?+?Prism?實(shí)現(xiàn)動態(tài)分頁加載圖片的方法,其中結(jié)合了ScrollViewer滾動條觸底檢測,實(shí)現(xiàn)邊滾動邊加載的流暢體驗(yàn),下面就跟隨小編一起學(xué)習(xí)一下吧
    2025-04-04
  • C#9.0:Init相關(guān)總結(jié)

    C#9.0:Init相關(guān)總結(jié)

    這篇文章主要介紹了C#9.0:Init的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)新版的c#,感興趣的朋友可以了解下
    2021-02-02
  • C#對文件名智能排序的算法

    C#對文件名智能排序的算法

    這篇文章介紹了C#對文件名智能排序的算法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#動態(tài)生成實(shí)體類的5種方法詳解與實(shí)戰(zhàn)演示

    C#動態(tài)生成實(shí)體類的5種方法詳解與實(shí)戰(zhàn)演示

    這篇文章主要為大家詳細(xì)介紹了C#中動態(tài)生成實(shí)體類的5種實(shí)用方法,涵蓋T4模板,CodeDOM,Roslyn,反射和Emit等技術(shù),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • C#使用Spire.Doc for .NET實(shí)現(xiàn)自動化生成Word目錄

    C#使用Spire.Doc for .NET實(shí)現(xiàn)自動化生成Word目錄

    在企業(yè)報告或長篇技術(shù)文檔中,手動創(chuàng)建Word TOC 自動化目錄往往耗時費(fèi)力,下面我們就來看看C#如何使用Spire.Doc for .NET解決這一問題吧
    2026-02-02
  • C#使用瀏覽按鈕獲得文件路徑和文件夾路徑的方法

    C#使用瀏覽按鈕獲得文件路徑和文件夾路徑的方法

    這篇文章主要介紹了C#使用瀏覽按鈕獲得文件路徑和文件夾路徑的方法,結(jié)合實(shí)例形式分析了C#瀏覽器事件響應(yīng)及文件操作相關(guān)技巧,需要的朋友可以參考下
    2017-05-05
  • C#實(shí)現(xiàn)斐波那契數(shù)列的幾種方法整理

    C#實(shí)現(xiàn)斐波那契數(shù)列的幾種方法整理

    這篇文章主要介紹了C#實(shí)現(xiàn)斐波那契數(shù)列的幾種方法整理,主要介紹了遞歸,循環(huán),公式和矩陣法等,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • C#中TCP通信的實(shí)現(xiàn)示例

    C#中TCP通信的實(shí)現(xiàn)示例

    本文介紹了C#中TCP通信的實(shí)現(xiàn)示例,包括服務(wù)端和客戶端的角色,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • C#控制Excel Sheet使其自適應(yīng)頁寬與列寬的方法

    C#控制Excel Sheet使其自適應(yīng)頁寬與列寬的方法

    這篇文章主要介紹了C#控制Excel Sheet使其自適應(yīng)頁寬與列寬的方法,涉及C#操作Excel的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • C#命名空間與java包的區(qū)別分析

    C#命名空間與java包的區(qū)別分析

    這篇文章主要介紹了C#命名空間與java包的區(qū)別,較為詳細(xì)的分析了C#命名空間與java包的相同點(diǎn)與不同點(diǎn),非常具有實(shí)用價值,需要的朋友可以參考下
    2015-04-04

最新評論

湛江市| 芒康县| 陈巴尔虎旗| 鄂州市| 营口市| 新郑市| 兴和县| 邛崃市| 凤翔县| 沈阳市| 闸北区| 佛冈县| 沽源县| 阳原县| 车致| 中西区| 上犹县| 江山市| 保山市| 越西县| 汝州市| 龙岩市| 青冈县| 阜城县| 黔西县| 宜城市| 宜兴市| 旬阳县| 姚安县| 黄山市| 阿拉善右旗| 平舆县| 曲周县| 汶川县| 海兴县| 益阳市| 黄骅市| 鹿邑县| 怀安县| 金乡县| 宜宾市|