2016-08-24 108 views
1

目前我的Excel文件有兩張紙,一張標題爲「英文」,一張標題爲「法文」。更改受保護的工作表

Valid XHTML

我編程方式打開工作簿,我並沒有任何問題,編輯我的英語片。當我打開第二張紙時,出現以下錯誤:

The cell or chart you're trying to change is on a protected sheet. To make a change, unprotect the sheet. You might be requested to enter a password.

請問我應該如何編輯第二張紙?

Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); 

Workbook wb = excel.Workbooks.Open(fileLocation); 

ws1.Range["E5"].Value = StartDate; 
ws1.Range["G5"].Value = EndDate; 


Worksheet ws = wb.Worksheets.get_Item("French"); 
ws.Select(Type.Missing); 

ws.Range["E5"].Value = StartDate; // <- Crashes here 
ws.Range["G5"].Value = EndDate; 

回答

2

您的工作表受到保護,因此您需要在修改它之前取消保護它。

Worksheet ws = wb.Worksheets.get_Item("French"); 

// Check for protection and unlock the worksheet 
If ws.ProtectContents { 
    ws.Unprotect("PROTECTION_PASSWORD"); 
} 

ws.Select(Type.Missing); 

ws.Range["E5"].Value = StartDate; // <- Crashes here 
ws.Range["G5"].Value = EndDate; 

如果不知道密碼,你可以蠻力很容易在使用的代碼in this question舊Excel文件(你必須將它移植到C#,但應該是微不足道的)。對於Excel 2013以後,請注意在該問題中提出的問題,因爲暴力破解不再有效。


您可能希望以後重新保護片(否則你顯著通過移除保護是有人決定把工作表上更改了文件的結構。要做到這一點,你會想使用Worksheet.Protect或許您想要保存舊的保護參數,例如Worksheet.ProtectContents,Worksheet.ProtectData,Worksheet.ProtectDrawingObjects,Worksheet.ProtectFormattingWorksheet.ProtectionMode,以便您可以以相同的方式重新保護它。如果您使用密碼破解程序而不知道密碼,您也可以從例程中獲取破解的密碼,並將其作爲的Password參數使用210方法。這將無縫地將保護設置恢復到之前的狀態。

+0

嗨@Mikegrann,這工作像一個絕對的魅力。感謝您的答覆。 – Master

相關問題