最近在做一个导入导出的功能,导出后,用户修改部分列的值,然后导入更新。为了能够进行更新,必须对某些列进行限制修改。
用的是NPOI控件,hssfworkbook.GetSheetAt(0).ProtectSheet("密码") 进行上锁。
问题来了,单纯用 ProtectSheet 并不行,还得设置单元格样式IsLocked。
IWorkbook hssfworkbook = new HSSFWorkbook(file);
//锁定样式
ICellStyle cellstyleLock = hssfworkbook .CreateCellStyle();
cellstyleLock .IsLocked = true;//上锁
//解除锁定样式
ICellStyle cellstyleUnLock = hssfworkbook .CreateCellStyle();
cellstyleUnLock.IsLocked = false;//解锁
设定好样式后,然后再遍历单元格的时候,赋值样式
ICell cellItem = row.GetCell(index);//获取行内单元格
if (cellItem == null) cellItem = row.CreateCell(index);//不存在就创建单元格
不允许修改,设置样式:
cellItem.CellStyle = cellstyleLock;//锁定
允许修改,设置样式:
cellItem.CellStyle = cellstyleUnLock ;//接触锁定