如何在 C# 中編輯工作簿元資料

如何在 C# 中編輯 Excel 工作簿的元資料

This article was translated from English: Does it need improvement?
Translated
View the article in English

使用 IronXL 的 Metadata 屬性以 C# 編輯 Excel 元資料,藉此在無需 Microsoft Interop 的情況下,程式化地設定 keywords 及其他文件屬性,無需 Microsoft Interop 即可實現電子表格的自動化組織與搜尋功能。

Excel 試算表的元資料包含關於 modification date 及其他相關細節。 元資料可提供背景資訊,並有助於整理和分類試算表。 它簡化了檔案搜尋與管理流程,特別是在處理多個試算表檔案時。 無論您是建立新的試算表,還是載入現有的工作簿,IronXL 都能讓元資料管理變得無縫銜接。

快速入門:一步輕鬆編輯工作簿元資料

使用 IronXL 的 Metadata 介面設定、修改及儲存 AuthorKeywords 等屬性。 無需 Interop —— 只需幾行簡潔直觀的 C# 程式碼,即可立即開始使用。

  1. using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronXL.Excel

    PM > Install-Package IronXL.Excel
  2. 請複製並執行此程式碼片段。

    IronXl.WorkBook.Load("input.xlsx").Metadata.Title = "Financial Summary";
    // Then save your update to a new file
    IronXl.WorkBook.Load("input.xlsx").SaveAs("output.xlsx");
  3. 部署至您的生產環境進行測試

    立即透過免費試用,在您的專案中開始使用 IronXL

    arrow pointer

如何編輯工作簿的元資料屬性?

若要編輯試算表檔案的作者名稱,請將 Author 屬性設定為所需的文字串。 例如,workBook.Metadata.Author = "Your Name"。 可存取並擷取 WorkBook 類別中 Metadata 屬性所提供的元資料資訊。 此方法可無縫支援各種試算表檔案類型,包括 XLSCSV 格式。

哪些屬性可以透過程式碼進行修改?

:path=/static-assets/excel/content-code-examples/how-to/edit-workbook-metadata.cs
using IronXL;
using System;

WorkBook workBook = WorkBook.Load("sample.xlsx");

// Set author
workBook.Metadata.Author = "Your Name";
// Set comments
workBook.Metadata.Comments = "Monthly report";
// Set title
workBook.Metadata.Title = "July";
// Set keywords
workBook.Metadata.Keywords = "Report";

// Read the creation date of the excel file
DateTime? creationDate = workBook.Metadata.Created;

// Read the last printed date of the excel file
DateTime? printDate = workBook.Metadata.LastPrinted;

workBook.SaveAs("editedMetadata.xlsx");
Imports IronXL
Imports System

Private workBook As WorkBook = WorkBook.Load("sample.xlsx")

' Set author
workBook.Metadata.Author = "Your Name"
' Set comments
workBook.Metadata.Comments = "Monthly report"
' Set title
workBook.Metadata.Title = "July"
' Set keywords
workBook.Metadata.Keywords = "Report"

' Read the creation date of the excel file
Dim creationDate? As DateTime = workBook.Metadata.Created

' Read the last printed date of the excel file
Dim printDate? As DateTime = workBook.Metadata.LastPrinted

workBook.SaveAs("editedMetadata.xlsx")
$vbLabelText   $csharpLabel

對於更複雜的場景,您可以將元資料編輯與其他 Excel 操作結合使用。 以下是一個展示如何批次處理多個 Excel 檔案的完整範例:

using IronXL;
using System;
using System.IO;

public class BatchMetadataProcessor
{
    public static void ProcessFinancialReports(string folderPath)
    {
        // Get all Excel files in the directory
        string[] excelFiles = Directory.GetFiles(folderPath, "*.xlsx");

        foreach (string filePath in excelFiles)
        {
            // Load the workbook
            WorkBook workBook = WorkBook.Load(filePath);

            // Update metadata based on file content
            string fileName = Path.GetFileNameWithoutExtension(filePath);

            // Set consistent metadata across all reports
            workBook.Metadata.Author = "Finance Department";
            workBook.Metadata.Company = "Your Company Name";
            workBook.Metadata.Category = "Financial Reports";

            // Set dynamic metadata based on filename
            if (fileName.Contains("Q1"))
            {
                workBook.Metadata.Title = "Q1 Financial Report";
                workBook.Metadata.Keywords = "Q1, Finance, Quarterly";
            }
            else if (fileName.Contains("Q2"))
            {
                workBook.Metadata.Title = "Q2 Financial Report";
                workBook.Metadata.Keywords = "Q2, Finance, Quarterly";
            }

            // Add timestamp to comments
            workBook.Metadata.Comments = $"Processed on {DateTime.Now:yyyy-MM-dd HH:mm}";

            // Set the subject based on worksheet content
            WorkSheet sheet = workBook.DefaultWorkSheet;
            workBook.Metadata.Subject = $"Report containing {sheet.RowCount} data rows";

            // Save with updated metadata
            string outputPath = Path.Combine(folderPath, "processed", fileName + "_updated.xlsx");
            workBook.SaveAs(outputPath);
        }
    }
}
using IronXL;
using System;
using System.IO;

public class BatchMetadataProcessor
{
    public static void ProcessFinancialReports(string folderPath)
    {
        // Get all Excel files in the directory
        string[] excelFiles = Directory.GetFiles(folderPath, "*.xlsx");

        foreach (string filePath in excelFiles)
        {
            // Load the workbook
            WorkBook workBook = WorkBook.Load(filePath);

            // Update metadata based on file content
            string fileName = Path.GetFileNameWithoutExtension(filePath);

            // Set consistent metadata across all reports
            workBook.Metadata.Author = "Finance Department";
            workBook.Metadata.Company = "Your Company Name";
            workBook.Metadata.Category = "Financial Reports";

            // Set dynamic metadata based on filename
            if (fileName.Contains("Q1"))
            {
                workBook.Metadata.Title = "Q1 Financial Report";
                workBook.Metadata.Keywords = "Q1, Finance, Quarterly";
            }
            else if (fileName.Contains("Q2"))
            {
                workBook.Metadata.Title = "Q2 Financial Report";
                workBook.Metadata.Keywords = "Q2, Finance, Quarterly";
            }

            // Add timestamp to comments
            workBook.Metadata.Comments = $"Processed on {DateTime.Now:yyyy-MM-dd HH:mm}";

            // Set the subject based on worksheet content
            WorkSheet sheet = workBook.DefaultWorkSheet;
            workBook.Metadata.Subject = $"Report containing {sheet.RowCount} data rows";

            // Save with updated metadata
            string outputPath = Path.Combine(folderPath, "processed", fileName + "_updated.xlsx");
            workBook.SaveAs(outputPath);
        }
    }
}
Imports IronXL
Imports System
Imports System.IO

Public Class BatchMetadataProcessor
    Public Shared Sub ProcessFinancialReports(folderPath As String)
        ' Get all Excel files in the directory
        Dim excelFiles As String() = Directory.GetFiles(folderPath, "*.xlsx")

        For Each filePath As String In excelFiles
            ' Load the workbook
            Dim workBook As WorkBook = WorkBook.Load(filePath)

            ' Update metadata based on file content
            Dim fileName As String = Path.GetFileNameWithoutExtension(filePath)

            ' Set consistent metadata across all reports
            workBook.Metadata.Author = "Finance Department"
            workBook.Metadata.Company = "Your Company Name"
            workBook.Metadata.Category = "Financial Reports"

            ' Set dynamic metadata based on filename
            If fileName.Contains("Q1") Then
                workBook.Metadata.Title = "Q1 Financial Report"
                workBook.Metadata.Keywords = "Q1, Finance, Quarterly"
            ElseIf fileName.Contains("Q2") Then
                workBook.Metadata.Title = "Q2 Financial Report"
                workBook.Metadata.Keywords = "Q2, Finance, Quarterly"
            End If

            ' Add timestamp to comments
            workBook.Metadata.Comments = $"Processed on {DateTime.Now:yyyy-MM-dd HH:mm}"

            ' Set the subject based on worksheet content
            Dim sheet As WorkSheet = workBook.DefaultWorkSheet
            workBook.Metadata.Subject = $"Report containing {sheet.RowCount} data rows"

            ' Save with updated metadata
            Dim outputPath As String = Path.Combine(folderPath, "processed", fileName & "_updated.xlsx")
            workBook.SaveAs(outputPath)
        Next
    End Sub
End Class
$vbLabelText   $csharpLabel

儲存時,現有的元資料會如何處理?

當您使用 IronXL 儲存或匯出 Excel 檔案時,任何未經您明確修改的元資料屬性,皆會保留其原始值。 僅您所變更的屬性會在儲存的檔案中更新。這種選擇性更新方式可確保在處理過程中,不會意外遺失現有的重要元資料。 下圖展示使用 IronXL 編輯後,元資料在 Excel 文件屬性面板中的顯示方式:

使用 IronXL 修改後,Excel 文件屬性面板顯示已編輯的元資料欄位,包括作者、標題、主題和關鍵字

若需在設定新值前清除現有元資料,只需將欲重設的屬性賦予空字串或 null 值即可。 這在準備供外部分發的文件時特別有用,此時您希望移除內部公司資訊。


IronXL 提供哪些元資料欄位?

並非所有元資料屬性皆可編輯。 某些屬性僅能被讀取。 了解哪些屬性支援不同的操作,對於有效的元資料管理至關重要。 在處理受密碼保護的工作簿時,只要成功解密工作簿,仍可存取並修改其元資料。

哪些屬性支援讀取與寫入操作?

屬性 描述 操作 常見應用情境
Author 文件建立者姓名 設定、修改、擷取 追蹤文件所有權與合規性
Comments 關於本文件的補充說明 設定、修改、擷取 版本說明、處理指示
LastPrinted 上次PRINT操作的日期/時間 設定、修改、擷取 PRINT歷史記錄追蹤、稽核追蹤
Keywords 可搜尋關鍵字 設定、修改、擷取 文件分類、搜尋優化
Category 文件類別分類 設定、修改、擷取 檔案組織、部門分類
Created 文件建立日期 設定、修改、擷取 文件存檔追蹤、歸檔決策
ModifiedDate 最後修改日期 設定、修改、擷取 變更追蹤、版本控制
Subject 文件主題說明 設定、修改、擷取 內容摘要、快速識別
Title 文件標題 設定、修改、擷取 文件識別、報告

哪些屬性是唯讀的?

屬性 描述 典型值
ApplicationName 建立此檔案的應用程式名稱 "Microsoft Excel"、"IronXL"
CustomProperties 使用者自訂屬性 視文件而定
Company 與本文件相關的公司名稱 系統中的組織名稱
Manager 來自文件屬性的經理名稱 摘自原始檔案
Template 用於建立此文件的範本 範本檔名或"Normal"

有關進階元資料操作及完整的 API 文件,請參閱 IronXL API 參考手冊。 若在處理元資料時遇到任何問題,請參閱我們的疑難排解指南,或探索用於生產環境部署的授權選項

常見問題

如何使用 C# 透過程式碼編輯 Excel 元資料?

IronXL 在 WorkBook 類別中提供了一個簡單的 Metadata 屬性,讓您能夠透過程式碼編輯 Excel 元資料。您無需使用 Microsoft Interop,即可輕鬆設定標題、作者、主題和關鍵字等屬性。只需載入工作簿,並存取 workBook.Metadata 即可修改任何元資料屬性。

在 Excel 檔案中,我可以修改哪些元資料屬性?

透過 IronXL,您可以修改各種元資料屬性,包括作者、標題、主題、關鍵字、類別、註解、狀態、負責人及公司。此程式庫亦提供對建立與修改日期的唯讀存取權限,讓您能對試算表進行全面的元資料管理。

編輯 Excel 元資料是否需要安裝 Microsoft Office?

不,IronXL 無需安裝 Microsoft Office 或 Interop。它是一個獨立的 C# 程式庫,能夠獨立讀取、寫入及修改 Excel 檔案及其元資料,因此非常適合用於未安裝 Office 的伺服器環境或系統。

我可以批次處理多個 Excel 檔案的元資料嗎?

是的,IronXL 支援 Excel 檔案的批次處理。您可以遍歷目錄中的多個試算表,使用 WorkBook.Load() 載入每個檔案,修改其元資料屬性,並將其儲存回去。這對於整理大量試算表檔案特別有用。

哪些 Excel 檔案格式支援元資料編輯?

IronXL 的元資料編輯功能可無縫支援各種試算表檔案格式,包括 XLSX、XLS 及 CSV 檔案。IronXL程式庫會在內部處理格式相關的細節,讓您無論使用何種檔案類型,都能透過相同的 Metadata 屬性介面進行操作。

編輯後該如何儲存元資料的變更?

using IronXL 修改元資料屬性後,只需呼叫 Save() 方法即可更新現有檔案,或呼叫 SaveAs() 方法以更新後的元資料建立新檔案。IronXL程式庫會自動將所有元資料變更與任何試算表資料修改一併儲存。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
Nuget 下載 2,052,917 | 版本: 2026.6 just released
Still Scrolling Icon

還在捲動嗎?

想要快速證明? PM > Install-Package IronXL.Excel
執行範例 觀看您的資料變成試算表。