2011-12-06 210 views
14

鎖定在Excel中單列我想創建一個Excel中,其中只有一個特定的列被鎖定(只讀),其餘都是可編輯的,使用Apache POI

我用下面的方法,但似乎沒有工作。

創建兩個CellStyles,一個使用setLocked(true),另一個使用setLocked(false)。

然後爲需要鎖定的列中的所有單元格和所有其他單元格的解鎖樣式應用鎖定樣式。

使用sheet.protectSheet(「」)保護工作表。

但是,當我打開在開放式辦公室創建的Excel,我注意到所有的單元格都被鎖定了!

它們都不可編輯。

我該如何達到上述要求?

P.S:我不能使用數據驗證方法。

+0

http://stackoverflow.com/questions/8502552/make-column-as-read-only-using-apache-poi – ravi

回答

19

如果你做相反的工作。保護整個工作表併爲應該可編輯的單元呼叫setLocked(false)

String file = "c:\\poitest.xlsx"; 
FileOutputStream outputStream = new FileOutputStream(file); 
Workbook wb = new XSSFWorkbook(); 

CellStyle unlockedCellStyle = wb.createCellStyle(); 
unlockedCellStyle.setLocked(false); 

Sheet sheet = wb.createSheet(); 
sheet.protectSheet("password"); 
Row row = sheet.createRow(0); 
Cell cell = row.createCell(0); 
cell.setCellValue("TEST"); 
cell.setCellStyle(unlockedCellStyle); 

wb.write(outputStream); 
outputStream.close(); 
+0

上述做法並不爲我工作。即時在mac上。 – Bobo

+2

更清晰,整個工作簿被鎖定,包括應該解鎖的單元格。 – Bobo