我想通過使用Microsoft.Office.Interop.Excel操縱Excel文件與C#。 我試圖操作的工作簿在用戶之間共享保護。如何在C#的受保護Excel表單中編輯或取消保護單個單元格?
我有文件密碼,我有我想要訪問和編輯的單元格的密碼。
如果我嘗試這樣做,從Excel,我做到以下幾點:
- 打開該文件,鍵入密碼
- 去一個小區中,小區雙擊編輯。
- 出現一個對話框,要求我提供密碼,我提供密碼,然後我可以編輯。
我想從C#應用程序做到這一點。
我當前的代碼如下:
xl.Application excelApp = new xl.Application();
excelApp.Visible = true;
xl.Workbook newworkbook =
excelApp.Workbooks.Open(@"C:\1.xls", 0, false, 5, "password", "", false,
xl.XlPlatform.xlWindows, "", true, false, 0, true,
false, false);
xl.Sheets excelSheets = newworkbook.Worksheets;
xl.Worksheet excelWorksheet = (xl.Worksheet)excelSheets.get_Item("Sign On_Off");
excelWorksheet.Select(true);
xl.Range myrange = excelWorksheet.get_Range("b16", "b16");
myrange.Value2 = "testing";
最後一行給我此錯誤消息:
您試圖更改單元格或圖表的保護,因此只讀。
我無法取消保護整個表格,因爲這意味着我將只爲我打開文件,其他用戶無法保存更改。
所以我的問題:是否有辦法我可以解除一個單元格只?
我想是這樣的:
myrange.unprotect("pw");
謝謝,但我怎麼編輯一個單元格,而不保護整個共享工作簿,我的意思是用Excel,我只需點擊單元格,然後鍵入我的PW爲這個單元格,然後它的可編輯, 每個用戶有不同的單元格爲不同的單元格, 我應該可以做到這一點,而不必爲受保護的共享工作簿pw,因爲我可以從excel – Stacker 2010-01-10 11:45:50
這麼做,非常感謝,以下是我曾嘗試的: excelWorksheet.Activate(); xl.Range myrange = excelWorksheet.get_Range(「b16」,「b16」); excelWorksheet.Protection.AllowEditRanges。添加(「Title」,myrange,「1」); 它生成一個錯誤:異常來自HRESULT:0x800A03EC – Stacker 2010-01-10 12:09:02
對不起,但我不知道從這裏去= =( – 2010-01-10 12:10:39