如何在C#中為工作簿設置密碼

Curtis Chau
Curtis Chau
Updated: 2026年6月4日

IronXL使開發者能夠透過一個方法呼叫在C#中密碼保護Excel工作簿——使用Encrypt方法與您的理想密碼並儲存工作簿以立即應用保護。

快速入門:使用IronXL加密工作簿密碼

只需一步,IronXL就能讓開發者加密Excel工作簿——不需要Interop、一點也不麻煩。 使用Encrypt方法與您的密碼並儲存文件以立即保護您的工作簿。

  1. 1Install IronXL with NuGet Package Manager

    PM > Install-Package IronXL.Excel

  2. 2複製並運行這段程式碼片段。

    var wb = WorkBook.Load("input.xlsx"); wb.Encrypt("MyStrongPass"); wb.SaveAs("input.xlsx");
  3. 3部署以在您的實時環境中測試

    今天就開始在您的專案中使用IronXL,透過免費試用
    arrow pointer

如何存取已密碼保護的工作簿?

提供密碼作為Load方法的第二個參數即可打開受保護的電子表格。 例如:WorkBook.Load("sample.xlsx", "IronSoftware")。 此功能在處理由同事或自動化流程保護的現有Excel文件時尤為重要。

請注意: 如果沒有正確的密碼是無法打開受保護的電子表格的

這是一個完整的範例,展示如何存取已密碼保護的工作簿:

using IronXL;

// Attempt to open a password-protected workbook
try 
{
    WorkBook protectedWorkBook = WorkBook.Load("encrypted_data.xlsx", "MySecretPass123!");
    
    // Access the first worksheet
    WorkSheet sheet = protectedWorkBook.WorkSheets[0];
    
    // Read data from protected file
    var cellValue = sheet["A1"].Value;
    Console.WriteLine($"Successfully accessed protected workbook. A1 contains: {cellValue}");
}
catch (Exception ex)
{
    Console.WriteLine($"Failed to open workbook: {ex.Message}");
}

如果我使用錯誤的密碼會發生什麼事?

當提供錯誤的密碼時,IronXL會拋出異常,而不是返回null或空的工作簿。 這種行為通過阻止未授權的存取嘗試來確保安全。請始終將您的密碼保護工作簿操作包裝在try-catch塊中,以優雅地處理身份驗證失敗。 如果您正在構建一個處理多個Excel文件的應用程式,考慮實施一個重試機制,讓使用者提示輸入密碼。

我可以在打開之前檢查工作簿是否已受密碼保護嗎?

不幸的是,Excel的文件格式不允許在嘗試打開文件前檢查密碼保護狀態。建議的方法是先嘗試在無密碼情況下載入,然後捕捉異常,如果需要則重新輸入密碼。 當管理多個帶有混合保護層次的工作表時,這個模式效果很好。

如何為工作簿設置密碼?

要對電子表格進行密碼保護,請使用下方程式碼中的Encrypt方法:

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

// Open protected spreadsheet file
WorkBook protectedWorkBook = WorkBook.Load("sample.xlsx", "IronSoftware");

// Set protection for spreadsheet file
workBook.Encrypt("IronSoftware");

workBook.Save();

對於更高級的場景,您可以將工作簿加密與工作表層級保護結合起來:

using IronXL;
using System;

// Create a new workbook with sensitive financial data
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workBook.CreateWorkSheet("FinancialData");

// Add sensitive data
sheet["A1"].Value = "Confidential Financial Report";
sheet["A3"].Value = "Revenue";
sheet["B3"].Value = 1250000;
sheet["A4"].Value = "Expenses";
sheet["B4"].Value = 750000;

// Apply formatting before encryption
sheet["B3:B4"].FormatString = "$#,##0.00";

// Encrypt the workbook with a strong password
workBook.Encrypt("F!n@nc3_S3cur3_2024");

// Save the encrypted workbook
workBook.SaveAs("financial_report_encrypted.xlsx");

Console.WriteLine("Workbook encrypted successfully!");

為什麼密碼只有在儲存後才生效?

Excel中的加密過程會修改文件的內部結構,這需要寫入磁碟。 在您呼叫SaveAs()之前,工作簿會在未應用加密情況下保留在記憶體中。 這種設計允許您在提交加密版本之前進行多次修改。 在處理工作簿中的元資料時,請記得在應用加密和儲存之前設定好所有屬性。

我應該使用什麼樣的密碼強度?

對於業務應用程式,請遵循以下密碼指南:

  • 最小12位元字元長度
  • 混合大小寫字母
  • 包含數字和特殊字元
  • 避免字典詞或可預測的模式
  • 考慮使用類似"MyExcel@Report#2024!"的通行短語

在開發將敏感資料導出到Excel的應用程式時,實施能夠程式化地執行這些要求的密碼策略。

我可以只對特定的工作表進行密碼保護嗎?

可以! IronXL支持工作簿層級和工作表層級的保護。 儘管工作簿加密可以防止未經授權的文件存取,工作表保護則可以防止對特定工作表的修改。 您可以結合兩種方法:

// Load workbook
WorkBook workBook = WorkBook.Load("multi_sheet_report.xlsx");

// Protect specific worksheets
workBook.WorkSheets["Summary"].ProtectSheet("SheetPass123");
workBook.WorkSheets["Details"].ProtectSheet("DetailPass456");

// Then encrypt the entire workbook
workBook.Encrypt("MasterPassword789!");

// Save with both protections
workBook.Save();
顯示 WorkBook.Load() 與 WorkBook.Encrypt() 方法的 C# 程式碼,並以檔案總管顯示 Excel 檔案

如何移除工作簿上的密碼?

要從電子表格中移除密碼,只需將 Password 欄位設為 null,如下圖中的程式碼所示:

請注意: 只能在存取工作簿之後執行此操作。 因此,有必要知道原來的密碼。
// Remove protection for opened workbook. Original password is required.
workBook.Password = null;

這是一個全面的範例,展示如何完整地去除密碼保護的工作流程:

using IronXL;

// First, open the protected workbook with the correct password
WorkBook protectedWorkBook = WorkBook.Load("encrypted_report.xlsx", "CurrentPassword123");

// Perform any necessary operations
WorkSheet sheet = protectedWorkBook.DefaultWorkSheet;
sheet["A1"].Value = "Updated after removing protection";

// Remove the password protection
protectedWorkBook.Password = null;

// Save the workbook without password protection
protectedWorkBook.SaveAs("unprotected_report.xlsx");

Console.WriteLine("Password protection removed successfully!");

我何時應該移除密碼保護?

移除密碼的常見情境包括:

  • 歸檔:將文件移送到安全儲存區,此時文件層級加密是多餘的
  • 系統整合:自動化過程需要匯入Excel資料,不需要手動介入
  • 協作:將文件分享給不需要密碼存取的團隊成員
  • 遷移:將受保護的文件轉換為系統不支援Excel加密的使用

在從任何工作簿中移除密碼保護之前,請始終確保您擁有適當的授權。

IronXL能夠通過一行C#程式碼保護和解鎖Excel workBooks 和 workSheets。 欲了解更多高級Excel安全功能,請探索我們關於工作簿元資料管理和安全資料處理實踐的指南。

常見問題

如何在C#中保護Excel工作簿的密碼?

有了IronXL,您可以使用Encrypt方法來保護Excel工作簿的密碼。只需載入您的工作簿,調用wb.Encrypt("YourPassword"),然後保存該文件。這個單一方法調用可以立即保護您的Excel文件,而不需要Microsoft Office Interop。

我可以在不知道密碼的情況下打開受密碼保護的Excel文件嗎?

不可以,IronXL要求輸入正確的密碼才能打開保護的Excel文件。當載入受密碼保護的工作簿時,您必須提供密碼作為第二個參數:WorkBook.Load("file.xlsx", "password").若沒有正確的密碼,則無法存取該文件。

當我使用錯誤的密碼嘗試打開受保護的工作簿時會發生什麼?

當提供了錯誤的密碼時,IronXL會拋出異常,而不是返回null或空白工作簿。這一安全特性可以防止未經授權的存取嘗試。始終將受密碼保護的工作簿操作包裹在try-catch塊中,以優雅地處理身份驗證失敗。

在打開Excel文件之前,如何檢查它是否受密碼保護?

Excel的文件格式不允許在嘗試打開文件之前檢查密碼保護狀態。使用IronXL,建議的方法是先嘗試不使用密碼載入文件,然後如果需要,捕捉異常並重新使用密碼載入。

我可以移除Excel工作簿的密碼保護嗎?

可以,IronXL允許您移除工作簿的密碼保護。首先,使用正確的密碼載入受保護的工作簿(通過WorkBook.Load("file.xlsx", "password")),然後不加密保存它以建立無保護的版本。

密碼保護適用於所有Excel文件格式嗎?

IronXL支持現代Excel格式(包括.xlsx和.xlsm文件)的密碼保護。該加密功能在不同的Excel版本中無縫地運作,不需要在系統上安裝Microsoft Office。

Is it possible to password-protect specific worksheets only?

Yes, IronXL allows you to protect specific worksheets by using the ProtectSheet method. This feature is useful for restricting access to certain data within a workbook while maintaining general file accessibility.

How can I remove password protection from an Excel workbook?

To remove password protection, open the workbook with the correct password, set the Password property to null, and save the workbook. This removes any encryption previously applied.

When is it appropriate to remove password protection from a workbook?

Removing password protection is appropriate when archiving files, integrating with systems that don't support encryption, sharing with team members who don't need secure access, or migrating to non-Excel formats.

Does IronXL support workbook-level and worksheet-level protection?

Yes, IronXL supports both workbook-level encryption and worksheet-level protection, allowing developers to implement comprehensive security measures tailored to their needs.

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

閱讀更多

準備好開始了嗎?

Nuget Downloads 2,362,812版本:2026.11剛剛發布