我正在使用Apache POI将数据写入Excel文件,我想让第一行只读,其他行可以随时编辑 . 但我没有找到解决它的有效方法 .

以下是我的代码:

public static void createExcel(){
    HSSFWorkbook workbook=new HSSFWorkbook();
    HSSFSheet sheet=workbook.createSheet("Variable");

    CellStyle lockStyle=workbook.createCellStyle();
    lockStyle.setLocked(true);

    CellStyle unlockStyle=workbook.createCellStyle();
    unlockStyle.setLocked(false);

    sheet.protectSheet("www.hirain.com");

    for(int i=0;i<=20;i++){
        Row row=sheet.createRow(i);
        if(i==0){
            row.setRowStyle(lockStyle);
        }else{
            row.setRowStyle(unlockStyle);
        }
        Cell c1=row.createCell(0);
        Cell c2=row.createCell(1);
        c1.setCellValue((char)i);
        c2.setCellValue(String.valueOf((char)(65+i)));
    }

    try {
        OutputStream out=new FileOutputStream(new File("D:\\test.xls"));
        workbook.write(out);
        out.flush();
        out.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println("=========export excel success=========");
}

看来这个java代码块应该可以工作,但实际上它不仅会锁定第一行,还会锁定其他行中的空单元格 .

所以我想知道是否有一种有效的方法只使用apachepoi锁定excel文件的第一行?