如何在 C# 上為 Excel 工作表設置密碼

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

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

要在C#中用密碼保護工作表,使用IronXL的workSheet.ProtectSheet("MyPass123")。 這將對任何Excel工作表應用唯讀保護,防止未經授權的修改,同時允許使用者查看內容。

快速入門:用一行程式碼保護工作表

使用IronXL,您可以通過調用ProtectSheet方法將任何工作表設置為唯讀——只需一行程式碼即可立即保護工作表。 非常適合希望在C#中輕鬆實現保護的開發者。

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

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

    new IronXL.WorkBook("data.xlsx").DefaultWorkSheet.ProtectSheet("MyPass123");
  3. 部署以在您的實時環境中測試

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

    arrow pointer

開始使用IronXL


如何存取受密碼保護的工作表?

IronXL允許您在不需要密碼的情況下存取和修改任何受保護的工作表。 一旦用IronXL打開電子表格,您可以修改任何工作表中的任何單元格。 當您需要載入現有電子表格可能已經被其他使用者或系統保護時,該功能特別有用。

在處理受保護的工作表時,IronXL無縫處理底層安全性。 您可以打開受密碼保護的Excel工作表,並進行讀取資料、更新單元格或應用公式等操作,而無需知道原始密碼。 這使得IronXL是自動化資料處理場景中的絕佳選擇,在這些場景中需要處理多個受保護文件。

如何應用密碼保護到工作表?

要限制對工作表的修改,同時允許使用者查看其在Excel中的內容,使用ProtectSheet方法並設定密碼爲參數。 例如,workSheet.ProtectSheet("IronXL")。 這爲選定的工作表設置了基於密碼的ReadOnly身份驗證。

:path=/static-assets/excel/content-code-examples/how-to/set-password-worksheet-protect.cs
using IronXL;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Set protection for selected worksheet
workSheet.ProtectSheet("IronXL");

workBook.Save();
Imports IronXL

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

' Set protection for selected worksheet
workSheet.ProtectSheet("IronXL")

workBook.Save()
$vbLabelText   $csharpLabel

保護多個工作表

當處理包含多個工作表的複雜工作簿時,您可能需要應用不同的保護策略:

:path=/static-assets/excel/content-code-examples/how-to/set-password-worksheet-3.cs
using IronXL;

// Load the workbook
WorkBook workBook = WorkBook.Load("financial-report.xlsx");

// Protect each worksheet with a different password
workBook.GetWorkSheet("Summary").ProtectSheet("SummaryPass123");
workBook.GetWorkSheet("Details").ProtectSheet("DetailsSecure456");
workBook.GetWorkSheet("Charts").ProtectSheet("ChartsProtect789");

// Save the workbook with all protections applied
workBook.SaveAs("protected-financial-report.xlsx");
Imports IronXL

' Load the workbook
Dim workBook As WorkBook = WorkBook.Load("financial-report.xlsx")

' Protect each worksheet with a different password
workBook.GetWorkSheet("Summary").ProtectSheet("SummaryPass123")
workBook.GetWorkSheet("Details").ProtectSheet("DetailsSecure456")
workBook.GetWorkSheet("Charts").ProtectSheet("ChartsProtect789")

' Save the workbook with all protections applied
workBook.SaveAs("protected-financial-report.xlsx")
$vbLabelText   $csharpLabel

這種方法特別有用在管理工作表時,這些工作表包含不同級別的敏感資訊。 您還可以將工作表保護和工作簿級別密碼保護結合使用以增強安全性。

當使用者嘗試打開受保護的工作表會發生什麼?

程式碼編輯器顯示使用 IronXL 函式庫實作的 Excel 工作表保護,並以檔案總管顯示 .xlsx 檔案

當使用者嘗試在Excel中修改受保護的工作表時,系統會提示他們輸入密碼。 沒有正確的密碼,他們只能查看內容,但無法進行任何更改。 這種保護在不同版本的Excel和支持Excel格式的其他電子表格應用程式中同樣有效。

在不同场景中使用受保护的工作表

IronXL的工作表保護功能與其他Excel操作無縫整合。 即使在保持保護狀態的同時,您仍然可以執行讀取操作、提取資料,甚至將文件轉換爲不同格式

:path=/static-assets/excel/content-code-examples/how-to/set-password-worksheet-4.cs
using IronXL;

// Load a workbook and protect specific worksheets based on content
WorkBook workBook = WorkBook.Load("employee-data.xlsx");

foreach (WorkSheet sheet in workBook.WorkSheets)
{
    // Check if the sheet name contains sensitive keywords
    if (sheet.Name.Contains("Salary") || sheet.Name.Contains("Personal"))
    {
        // Apply stronger password protection to sensitive sheets
        sheet.ProtectSheet($"Secure_{sheet.Name}_2024!");
    }
    else
    {
        // Apply standard protection to other sheets
        sheet.ProtectSheet("StandardProtection");
    }
}

// Save the selectively protected workbook
workBook.SaveAs("employee-data-protected.xlsx");
Imports IronXL

' Load a workbook and protect specific worksheets based on content
Dim workBook As WorkBook = WorkBook.Load("employee-data.xlsx")

For Each sheet As WorkSheet In workBook.WorkSheets
    ' Check if the sheet name contains sensitive keywords
    If sheet.Name.Contains("Salary") OrElse sheet.Name.Contains("Personal") Then
        ' Apply stronger password protection to sensitive sheets
        sheet.ProtectSheet($"Secure_{sheet.Name}_2024!")
    Else
        ' Apply standard protection to other sheets
        sheet.ProtectSheet("StandardProtection")
    End If
Next

' Save the selectively protected workbook
workBook.SaveAs("employee-data-protected.xlsx")
$vbLabelText   $csharpLabel

如何移除工作表上的密碼保護?

要從特定工作表中移除密碼,請使用UnprotectSheet方法。 只需调用workSheet.UnprotectSheet()即可移除與工作表關聯的任何密碼。

:path=/static-assets/excel/content-code-examples/how-to/set-password-worksheet-unprotect.cs
// Remove protection for selected worksheet. It works without password!
workSheet.UnprotectSheet();
' Remove protection for selected worksheet. It works without password!
workSheet.UnprotectSheet()
$vbLabelText   $csharpLabel

批量解除工作表的保护

在處理多個受保護的工作表時,您可能需要一次性移除所有工作表上的保護。 這是一個高效的方法:

:path=/static-assets/excel/content-code-examples/how-to/set-password-worksheet-6.cs
using IronXL;
using System;

// Load the protected workbook
WorkBook workBook = WorkBook.Load("multi-protected.xlsx");

// Counter for tracking operations
int unprotectedCount = 0;

// Iterate through all worksheets and remove protection
foreach (WorkSheet sheet in workBook.WorkSheets)
{
    try
    {
        sheet.UnprotectSheet();
        unprotectedCount++;
        Console.WriteLine($"Unprotected: {sheet.Name}");
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Failed to unprotect {sheet.Name}: {ex.Message}");
    }
}

Console.WriteLine($"Successfully unprotected {unprotectedCount} worksheets");

// Save the unprotected workbook
workBook.SaveAs("multi-unprotected.xlsx");
Imports IronXL
Imports System

' Load the protected workbook
Dim workBook As WorkBook = WorkBook.Load("multi-protected.xlsx")

' Counter for tracking operations
Dim unprotectedCount As Integer = 0

' Iterate through all worksheets and remove protection
For Each sheet As WorkSheet In workBook.WorkSheets
    Try
        sheet.UnprotectSheet()
        unprotectedCount += 1
        Console.WriteLine($"Unprotected: {sheet.Name}")
    Catch ex As Exception
        Console.WriteLine($"Failed to unprotect {sheet.Name}: {ex.Message}")
    End Try
Next

Console.WriteLine($"Successfully unprotected {unprotectedCount} worksheets")

' Save the unprotected workbook
workBook.SaveAs("multi-unprotected.xlsx")
$vbLabelText   $csharpLabel

工作表保護的最佳實踐

在您的C#應用程式中實施工作表保護時,請考慮以下建議:

  1. 使用強密碼:生成包含字母、數字和特殊字元的複雜密碼。 考慮使用密碼管理器或安全儲存來管理多個工作表密碼。

  2. 文件保護狀態文件:保持哪張工作表受保護以及原因的日誌。 這有助於維護和故障排除。

  3. 結合許可證管理:在分發受保護的Excel文件時,確保您已經正確配置了IronXL許可證以用於部署場景。

  4. 測試保護場景:在部署受保護的工作表之前,請用各種Excel版本測試它們以確保相容性。

  5. 考慮性能:雖然保護不會顯著影響性能,但處理大型工作簿中的許多受保護工作表可能需要優化策略。

高級保護場景

IronXL的工作表保護可以整合到更復雜的工作流程中。 例如,您可以建立具有預配置保護設置的新電子表格。

:path=/static-assets/excel/content-code-examples/how-to/set-password-worksheet-7.cs
using IronXL;
using System;

// Create a new workbook with protected templates
WorkBook workBook = WorkBook.Create();

// Add and configure protected worksheets
WorkSheet budgetSheet = workBook.CreateWorkSheet("Budget2024");
budgetSheet["A1"].Value = "Annual Budget";
budgetSheet["A2"].Value = "Department";
budgetSheet["B2"].Value = "Allocated Amount";
// Add more data...
budgetSheet.ProtectSheet("BudgetProtect2024");

WorkSheet forecastSheet = workBook.CreateWorkSheet("Forecast");
forecastSheet["A1"].Value = "Revenue Forecast";
// Add forecast data...
forecastSheet.ProtectSheet("ForecastSecure123");

// Save the protected workbook
workBook.SaveAs("protected-templates.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

爲了全面的Excel文件操作功能,請查閱完整的IronXL文件或查看關於讀取Excel文件的教程以擴展您的Excel自動化工具集。

IronXL允許您使用一行C#程式碼保護和取消保護任何Excel工作簿工作表

常見問題

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

您可以在 C# 中使用 IronXL 的 ProtectSheet 方法來保護 Excel 工作表。只需對任何工作表物件調用 workSheet.ProtectSheet("YourPassword") 即可。這將應用唯讀保護,防止未授權的修改,同時允許使用者查看內容。

我可以在不知密碼的情況下存取和修改受密碼保護的工作表嗎?

是的,IronXL 允許您在不需要原始密碼的情況下存取和修改任何受保護的工作表。一旦使用 IronXL 開啟試算表,您可以修改任何工作表中的任何儲存格,這使得它非常適合於需要處理多個受保護檔案的自動化資料處理場景。

ProtectSheet 方法適用於何種保護?

IronXL 中的 ProtectSheet 方法對選擇的工作表應用了唯讀身份驗證。這意味著使用者可以查看內容,但如果沒有在 Excel 打開檔案時輸入正確的密碼,則無法進行修改。

我可以使用不同的密碼保護多個工作表嗎?

可以,IronXL 允許您使用不同的密碼保護多個工作表。您可以迭代工作簿中的工作表,並使用 ProtectSheet 方法對每個工作表應用不同的密碼,例如 workBook.GetWorkSheet("Summary").ProtectSheet("SummaryPass123").

用程式碼保護 Excel 工作表最簡單的方法是什麼?

最簡單的方法是使用 IronXL 的一行程式碼方法:new IronXL.WorkBook("data.xlsx").DefaultWorkSheet.ProtectSheet("MyPass123").這會立即以密碼保護預設的工作表。

密碼保護會影響匯出工作表為不同格式的能力嗎?

不會,IronXL 中的密碼保護不會阻止您將工作表匯出為不同的試算表格式。您仍然可以在應用密碼保護後將受保護的工作表儲存和匯出為各種 Excel 格式。

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
運行一個範例 觀看您的資料成為試算表。