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

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

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

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

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

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

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronXL.Excel

    PM > Install-Package IronXL.Excel
  2. 複製並運行這段程式碼片段。

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

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

    arrow pointer


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

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

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

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

:path=/static-assets/excel/content-code-examples/how-to/set-password-workbook-2.cs
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}");
}
Imports IronXL

' Attempt to open a password-protected workbook
Try
    Dim protectedWorkBook As WorkBook = WorkBook.Load("encrypted_data.xlsx", "MySecretPass123!")

    ' Access the first worksheet
    Dim sheet As WorkSheet = protectedWorkBook.WorkSheets(0)

    ' Read data from protected file
    Dim cellValue = sheet("A1").Value
    Console.WriteLine($"Successfully accessed protected workbook. A1 contains: {cellValue}")
Catch ex As Exception
    Console.WriteLine($"Failed to open workbook: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

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

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

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

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

如何為工作簿設置密碼?

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

:path=/static-assets/excel/content-code-examples/how-to/set-password-workbook-protect.cs
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();
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")

' Open protected spreadsheet file
Dim protectedWorkBook As WorkBook = WorkBook.Load("sample.xlsx", "IronSoftware")

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

workBook.Save()
$vbLabelText   $csharpLabel

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

:path=/static-assets/excel/content-code-examples/how-to/set-password-workbook-4.cs
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!");
Imports IronXL
Imports System

' Create a new workbook with sensitive financial data
Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = 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!")
$vbLabelText   $csharpLabel

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

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

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

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

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

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

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

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

:path=/static-assets/excel/content-code-examples/how-to/set-password-workbook-5.cs
// 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();
' Load workbook
Dim workBook As 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()
$vbLabelText   $csharpLabel
顯示 WorkBook.Load() 與 WorkBook.Encrypt() 方法的 C# 程式碼,並以檔案總管顯示 Excel 檔案

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

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

請注意只能在存取工作簿之後執行此操作。 因此,有必要知道原來的密碼。

:path=/static-assets/excel/content-code-examples/how-to/set-password-workbook-unprotect.cs
// Remove protection for opened workbook. Original password is required.
workBook.Password = null;
' Remove protection for opened workbook. Original password is required.
workBook.Password = Nothing
$vbLabelText   $csharpLabel

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

:path=/static-assets/excel/content-code-examples/how-to/set-password-workbook-7.cs
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!");
Imports IronXL

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

' Perform any necessary operations
Dim sheet As WorkSheet = protectedWorkBook.DefaultWorkSheet
sheet("A1").Value = "Updated after removing protection"

' Remove the password protection
protectedWorkBook.Password = Nothing

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

Console.WriteLine("Password protection removed successfully!")
$vbLabelText   $csharpLabel

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

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

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

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

IronXL能夠通過一行C#程式碼保護和解鎖Excel workBooksworkSheets。 欲了解更多高級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。

Curtis Chau
技術作家

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

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備好開始了嗎?
Nuget 下載 2,134,203 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

仍在滾動嗎?

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