I'm new to this group, so I apologize if this question has already been 
answered. Thanks in advance for any assistance.

Question:

http://stackoverflow.com/questions/2142232/poi-xssf-api-how-do-i-lock-specific-excel-sheet-features


I'm using the POI-XSSF API<http://poi.apache.org/spreadsheet/index.html> to 
write Excel 2007 documents, and i'm having trouble getting specific facets of a 
given sheet to lock. The API says 
that<http://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFSheet.html#lockDeleteColumns%28%29>
 you need to call enableLocking() on the sheet but when I do that it locks 
everything and ignores my specific locking settings (example below). When I 
don't call it nothing is locked.

It seems this must work given the fact they provided specific methods to give 
one granular locking control at a sheet level. So how can I lock specific 
facets of a workbook/worksheet using this API?


XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("Sheet1");
XSSFCell cell;

XSSFRow row = sheet.createRow(0);
cell = row.createCell(0, XSSFCell.CELL_TYPE_STRING); cell.setCellValue("Sku");
cell = row.createCell(1, XSSFCell.CELL_TYPE_STRING); 
cell.setCellValue("Category");
cell = row.createCell(2, XSSFCell.CELL_TYPE_STRING); 
cell.setCellValue("SubCategory");
cell = row.createCell(3, XSSFCell.CELL_TYPE_STRING); cell.setCellValue("Name");
cell = row.createCell(4, XSSFCell.CELL_TYPE_STRING); 
cell.setCellValue("DATE_ADDED");
cell = row.createCell(5, XSSFCell.CELL_TYPE_STRING); 
cell.setCellValue("SEO_DESCRIPTION");

row = sheet.createRow(1);
cell = row.createCell(0, XSSFCell.CELL_TYPE_STRING); 
cell.setCellValue("4bd2c24571534e098589");
cell = row.createCell(1, XSSFCell.CELL_TYPE_STRING); cell.setCellValue("CLUBS");
cell = row.createCell(2, XSSFCell.CELL_TYPE_STRING); 
cell.setCellValue("DRIVERS");
cell = row.createCell(3, XSSFCell.CELL_TYPE_STRING); cell.setCellValue("Super 
dooper pooper 1112222 -- ASFASDF");
cell = row.createCell(4, XSSFCell.CELL_TYPE_STRING); cell.setCellValue(new 
Date());
cell = row.createCell(5, XSSFCell.CELL_TYPE_STRING); 
cell.setCellValue("asdfhavsdvf absdfhvbashdv asvdfhavsfasdf");

sheet.lockDeleteColumns();
sheet.lockInsertColumns();
sheet.lockDeleteRows();

sheet.enableLocking(); // why does this call ignore the last 3 lock settings i 
just set???????????

OutputStream out;
try {
    out = new FileOutputStream("c:\\temp\\TestWB.xlsx", false);
    wb.write(out);
} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}





Reply via email to