2013-05-13 80 views
1

我试图写入Excel表格中的一些数据,并在写入必要的数据后,我想通过使它们不可编辑来防止单元格编辑。在这个操作之后,一些数据将会在表单用户的不受保护的单元格上更新,然后我将使用这些数据并读取它们以执行一些处理活动。使用C保护excel中的列使用C#

  1. 有人可以帮我一个具体的,我怎么锁定一个专栏在Excel中编辑?
  2. 你如何使用C#写入受保护的列?
  3. 如何阅读使用C#从受保护的列?

简单引用例子会大大帮助我。 PS:如果你对VB.NET更加熟悉,即使参考了如何做到这一点也会有所帮助。

+0

完成从什么我发现你不能用普通的Excel做到这一点......所以不会有通过C#或VB.NET来做到这一点的方法......恕我直言,“期望将这些数据放入Excel Worksh” eet将回来未修改,其他部分可由用户编辑“充其量似乎冒险... – Yahia 2013-05-13 09:10:26

+0

风险如何?我允许用户在工作表中编辑一些值,同时保护编辑中的其他值。我曾经见过擅长作为标题和标签的单元格是不可编辑的,而用户可以输入其他单元格的值。所以我认为类似的东西也应该在这里工作。 – Shouvik 2013-05-13 09:15:10

+0

虽然有这种“保护”,但确实可以修改Excel文件。任何你发给用户的数据然后返回(添加了一些数据)应该在你进一步处理之前进行验证(用户是具有不同技能组合的非常不同的类型)。 – Yahia 2013-05-13 09:21:24

回答

1

对于Excel单元格将在不可编辑的模式,两件事情必须要照顾:

1)Excel单元格应锁定

ws.get_Range(“位置”,类型.Missing).Locked = true;

2)的Excel工作表也应该锁定

ws.Protect("SecurityCode", true, true, true, 
      Type.Missing, Type.Missing, true, true, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing); 
//where ws is the worksheet object 

关于第二个问题,通过一个受保护的单元以读取,这可以直接

string CellValue = ws.get_Range("Location", Type.Missing).Value2.ToString(); 
//Now depending upon the CellValue you can write your own Logic. 
+0

让我用这个工作,并检查出来。 – Shouvik 2013-05-13 09:12:44

+0

是的。如果你想让整个列不可编辑,只需包含ws.get_Range(“Location”,Type.Missing).EntireColumn.Locked = true; – 2013-05-13 09:14:29