2010-07-19 73 views
2

有沒有辦法鎖定用戶編輯的某些單元格?我曾嘗試以下:鎖定JXL生成的Excel文檔中的單元格

WritableCellFormat cf = new WritableCellFormat(); 
cf.setLocked(true); 
sheet.addCell(new Number(col, row, value, cf)); 

然而,這似乎並不具有生成的電子表格上的任何影響,即當該Excel文件被打開單元格的內容仍然可以改變。

回答

4

您必須爲每張紙「激活」保護。我不知道這應該如何完成。我發現的方法是

sheet.setProtected(true); 

但顯然這種方法不再推薦。所以你應該嘗試找到一些新的。

編輯: 抱歉,我的錯誤。這將鎖定工作表中的每個單元格。

編輯2: 它適用於我,如果你鎖定entiry表單然後解鎖可編輯的單元格。

sheet.getSettings().setProtected(true); 
WritableCellFormat unlocked = new WritableCellFormat(); 
unlocked.setLocked(false); 
Label l = new Label(0, 0, "", unlocked); 
sheet.addCell(l); 
+1

謝謝,這個作品! (儘管顯式定義未鎖定的單元格有點不方便,因爲我通常只需要一個或兩個單元格來鎖定) – Janne 2011-02-23 06:27:03

2

這裏是保護細胞,而不使用在accepted answer
1.過時方法創建一個WritableCellFormat對象的一般步驟和當你添加你想要一個小區要設置鎖定爲false
2解鎖包括AddCell(...)方法中的WritableCellFormat方法調用
3.調用工作表上的getSettings以獲取SheetSettings對象並調用setProtected(true)來保護工作表,並通過擴展來保護缺省情況下在excel中的受保護單元是所有的細胞。

WritableCellFormat cellFormat = new WritableCellFormat(); 
cellFormat.setLocked(false) 

WritableSheet sheet = Worksheet.createSheet(); 

//Create a cell that is protected and a cell that is not protected 
sheet.addCell(new Label(col1, row, "My Locked Cell"); 
sheet.addCell(new Label(col2, row, "My Unlocked Cell", cellFormat); 

//Protect the sheet so that locked cells are locked and unlocked cells are unlocked 
sheet.getSettings().setProtected(true);