2013-05-13 28 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