C#: 高效地读取和移除Excel文档属性

内容分享1周前发布
1 0 0

C#: 高效地读取和移除Excel文档属性——Spire.XLS for .NET实战指南

在日常的软件开发和数据处理中,Excel文件扮演着举足轻重的角色。不过,除了我们直接看到的数据和格式,Excel文件还隐藏着许多“元数据”,也就是我们常说的文档属性(Document Properties)。这些属性记录了文件的作者、创建日期、主题、摘要等信息,甚至可以包含自定义的额外数据。对于C#开发者而言,高效地读取或移除这些文档属性,不仅能协助我们更好地理解文件内容,还能在自动化处理、数据清洗、隐私保护等场景中发挥关键作用。

今天,我将向大家介绍如何利用强劲的第三方库 Spire.XLS for .NET,在C#中轻松实现对Excel文档属性的读取和移除操作。它以其便捷性和高效性,成为了处理Excel文件的得力助手。

一、理解Excel文档属性及其C#处理需求

Excel文档属性大致可以分为两类:

  • 内置属性 (Built-in Properties):这些是Excel软件默认提供的属性,例如“标题 (Title)”、“主题 (Subject)”、“作者 (Author)”、“关键词 (Keywords)”、“备注 (Comments)”、“上次保存者 (Last Saved By)”等。它们提供了文件的基本信息。
  • 自定义属性 (Custom Properties):开发者或用户可以根据需要添加的额外属性,用于存储特定业务数据或标记。例如,你可以添加一个名为“项目ID”的自定义属性来关联文件与项目。

在实际开发中,我们为何需要处理这些属性呢?

  • 数据审计与追踪:读取作者、修改时间等信息,可以协助我们追踪文件的来源和变更历史。
  • 内容管理与检索:利用标题、主题、关键词等属性,可以对大量Excel文件进行分类和快速检索。
  • 隐私保护:在分享或发布Excel文件时,可能需要移除包含个人或敏感信息的文档属性,以避免信息泄露。
  • 文件优化:移除不必要的属性,可以略微减小文件大小,尤其是在处理海量文件时。
  • 自动化处理:在批量处理Excel文件时,程序化地读取或修改属性,可以实现更智能的工作流。

二、使用Spire.XLS for .NET读取Excel文档属性

如何快速获取Excel文件的“身份信息”?Spire.XLS for .NET提供了一套直观的API来访问这些属性。

第一,你需要通过NuGet安装Spire.XLS库。

Install-Package Spire.XLS

接下来,我们来看如何读取内置属性和自定义属性。

using Spire.Xls;
using System;
using System.Text;

public class ExcelPropertiesReader
{
    public static void ReadExcelDocumentProperties(string filePath)
    {
        // 创建一个Workbook实例
        Workbook workbook = new Workbook();
        // 从指定路径加载Excel文件
        workbook.LoadFromFile(filePath);

        Console.WriteLine("--- Excel 文档内置属性 ---");
        // 访问内置文档属性
        DocumentProperties builtInProperties = workbook.DocumentProperties;
        Console.WriteLine($"标题: {builtInProperties.Title}");
        Console.WriteLine($"主题: {builtInProperties.Subject}");
        Console.WriteLine($"作者: {builtInProperties.Author}");
        Console.WriteLine($"关键词: {builtInProperties.Keywords}");
        Console.WriteLine($"备注: {builtInProperties.Comments}");
        Console.WriteLine($"创建日期: {builtInProperties.CreatedTime}");
        Console.WriteLine($"上次保存者: {builtInProperties.LastSavedBy}");
        Console.WriteLine($"上次保存时间: {builtInProperties.LastSavedTime}");
        Console.WriteLine($"修订号: {builtInProperties.RevisionNumber}");
        Console.WriteLine($"应用程序名称: {builtInProperties.ApplicationName}");
        // ... 还有更多内置属性可以访问

        Console.WriteLine("
--- Excel 文档自定义属性 ---");
        // 访问自定义文档属性
        ICustomDocumentProperties customProperties = workbook.CustomDocumentProperties;
        if (customProperties.Count > 0)
        {
            foreach (DocumentProperty prop in customProperties)
            {
                Console.WriteLine($"自定义属性名: {prop.Name}, 值: {prop.Value}, 类型: {prop.Type}");
            }
        }
        else
        {
            Console.WriteLine("该文件没有自定义属性。");
        }

        // 关闭Workbook,释放资源
        workbook.Dispose();
    }

    public static void Main(string[] args)
    {
        // 替换为你的Excel文件路径
        string excelFilePath = "YourSampleExcel.xlsx"; 
        ReadExcelDocumentProperties(excelFilePath);
    }
}

示例表格:常用内置文档属性及其Spire.XLS属性名

内置属性名(Excel界面)

Spire.XLS属性名

描述

标题

Title

文档的标题

主题

Subject

文档的主题

作者

Author

文档的创建者

关键词

Keywords

用于搜索的关键词

备注

Comments

文档的注释或摘要

创建日期

CreatedTime

文档的创建时间

上次保存者

LastSavedBy

最后一次保存文档的用户

上次保存时间

LastSavedTime

最后一次保存文档的时间

修订号

RevisionNumber

文档的修订版本号

应用程序名称

ApplicationName

创建文档的应用程序名称(如”Microsoft Excel”)

三、使用Spire.XLS for .NET移除Excel文档属性

一键清除敏感信息,保护Excel文件隐私。在某些场景下,我们需要清理Excel文件中包含的个人信息或不必要的元数据。Spire.XLS for .NET同样提供了便捷的方法。

using Spire.Xls;
using System;

public class ExcelPropertiesRemover
{
    public static void RemoveExcelDocumentProperties(string filePath, string outputPath)
    {
        // 创建一个Workbook实例
        Workbook workbook = new Workbook();
        // 从指定路径加载Excel文件
        workbook.LoadFromFile(filePath);

        // --- 移除内置属性示例 ---
        // 注意:内置属性一般不能直接通过Remove方法移除,
        // 而是通过设置为空字符串或默认值来“清除”其内容。
        // 例如,清除作者信息:
        workbook.DocumentProperties.Author = string.Empty;
        // 清除标题信息:
        workbook.DocumentProperties.Title = string.Empty;
        // 清除备注信息:
        workbook.DocumentProperties.Comments = string.Empty;
        Console.WriteLine("已尝试清除部分内置属性内容。");

        // --- 移除自定义属性示例 ---
        ICustomDocumentProperties customProperties = workbook.CustomDocumentProperties;

        // 移除指定名称的自定义属性
        string customPropertyNameToRemove = "项目ID"; 
        if (customProperties.Contains(customPropertyNameToRemove))
        {
            customProperties.Remove(customPropertyNameToRemove);
            Console.WriteLine($"已移除自定义属性: '{customPropertyNameToRemove}'");
        }
        else
        {
            Console.WriteLine($"自定义属性 '{customPropertyNameToRemove}' 不存在。");
        }

        // 如果需要,可以移除所有自定义属性
        // customProperties.Clear(); 
        // Console.WriteLine("已清除所有自定义属性。");

        // 保存修改后的Excel文件
        workbook.SaveToFile(outputPath, ExcelVersion.Version2013); // 可以指定保存为不同的Excel版本
        Console.WriteLine($"修改后的文件已保存到: {outputPath}");

        // 关闭Workbook,释放资源
        workbook.Dispose();
    }

    public static void Main(string[] args)
    {
        // 替换为你的Excel文件路径和输出路径
        string excelFilePath = "YourSampleExcel.xlsx";
        string outputFilePath = "YourSampleExcel_Cleaned.xlsx";
        RemoveExcelDocumentProperties(excelFilePath, outputFilePath);
    }
}

注意事项:

  • 对于内置属性,一般无法像自定义属性那样直接通过 Remove 方法彻底删除键值对,而是需要将其值设置为空字符串或默认值来达到“清除”的效果。
  • customProperties.Clear() 方法可以一次性移除所有的自定义属性,使用时请谨慎。

总结

通过本文的介绍,信任大家已经对如何在C#中使用 Spire.XLS for .NET 读取和移除Excel文档属性有了清晰的认识。无论是为了数据分析、隐私保护还是自动化流程,掌握这些技能都将极大地提升C#开发者处理Excel文件的效率和能力。

希望这篇分享能协助你在C# Excel开发之路上走得更远!

© 版权声明

相关文章

暂无评论

none
暂无评论...