我想创建一个Excel,其中只锁定一个特定的列(只读),其余的是可编辑的,
我使用以下方法,但这似乎不起作用.
创建两个CellStyles,一个使用setLocked(true),另一个使用setLocked(false).
然后对需要锁定的列中的所有单元格应用锁定样式,为所有其他单元格应用未锁定样式.
使用sheet.protectSheet("")保护工作表;
但是当我在开放式办公室打开创建的Excel时,我注意到所有单元格都被锁定了!
它们都不可编辑.
我怎样才能达到上述要求?
PS:我不能使用数据验证方法.
我正在使用Apache POI生成我的客户可以下载的Exccel Templete,添加值并上传回来.
我想将单元格值设置为不可编辑,以便无法编辑模板标题.
我试过这段代码,但它不起作用,
cell.getCellStyle().setLocked(true)
Run Code Online (Sandbox Code Playgroud)
我还读到锁定excel表然后允许列setlocked(false)可以工作,但我不确定客户端将填充多少列,所以我想要编辑所有其他列除了我填写的列动态地使用Apache POI.
我希望我的查询清楚明白.
我有一个下拉列表包含一些选项,例如两个单元格。我需要的是关于所选选项,将其中一个单元格设置为可编辑,将另一个单元格设置为只读,反之亦然。
FileOutputStream fos;
try {
fos = new FileOutputStream("D:\\POIXls.xls");
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("new Sheet");
DataValidationHelper dvHelper = sheet.getDataValidationHelper();
DataValidationConstraint dvConstraint =
dvHelper.createExplicitListConstraint(new String[] { "cell 1 edit","cell 2 edit"});
CellRangeAddressList addressList = new CellRangeAddressList(0, 2, 0, 0);
DataValidation validation = dvHelper.createValidation(dvConstraint, addressList);
if (validation instanceof XSSFDataValidation) {
validation.setSuppressDropDownArrow(true);
validation.setShowErrorBox(true);
} else {
validation.setSuppressDropDownArrow(false);
}
sheet.addValidationData(validation);
workbook.write(fos);
fos.flush();
fos.close();
}catch(Exception e){//catch code}
Run Code Online (Sandbox Code Playgroud)
我需要知道如何使 xls 文件根据用户的选择使这些单元格可编辑/只读。VB 代码也可能有帮助。
在使用Apache POI HSSF创建它之后,我想要只读excel表.我怎样才能做到这一点?