我想通过使用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