![](https://i-blog.csdnimg.cn/blog_migrate/43ff4e60d311fd0e04e6d5d66d117ace.gif)
那么,在NPOI中有没有办法通过编码的方式达到这一效果呢?答案是肯定的。
HSSFSheet sheet1
=
hssfworkbook.CreateSheet(
"
Sheet1
"
);
HSSFRow row1 = sheet1.CreateRow( 0 );
HSSFCell cel1 = row1.CreateCell( 0 );
HSSFCell cel2 = row1.CreateCell( 1 );
HSSFCellStyle unlocked = hssfworkbook.CreateCellStyle();
unlocked.IsLocked = false ;
HSSFCellStyle locked = hssfworkbook.CreateCellStyle();
locked.IsLocked = true ;
cel1.SetCellValue( " 没被锁定 " );
cel1.CellStyle = unlocked;
cel2.SetCellValue( " 被锁定 " );
cel2.CellStyle = locked;
sheet1.ProtectSheet( " password " );
正如代码中所看到的,我们通过设置CellStype的ISLocked为True,表示此单元格将被锁定。相当于在Excel中执行了如下操作:
HSSFRow row1 = sheet1.CreateRow( 0 );
HSSFCell cel1 = row1.CreateCell( 0 );
HSSFCell cel2 = row1.CreateCell( 1 );
HSSFCellStyle unlocked = hssfworkbook.CreateCellStyle();
unlocked.IsLocked = false ;
HSSFCellStyle locked = hssfworkbook.CreateCellStyle();
locked.IsLocked = true ;
cel1.SetCellValue( " 没被锁定 " );
cel1.CellStyle = unlocked;
cel2.SetCellValue( " 被锁定 " );
cel2.CellStyle = locked;
sheet1.ProtectSheet( " password " );
![](https://i-blog.csdnimg.cn/blog_migrate/17e71ab064eb7ea0e5fdd77e3f362739.gif)
然后通过ProtectSheet设置密码。
执行结果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/aeda8fb0cb5a28eb9e4a56841bffa459.gif)
没被锁定的列可以任意修改。
被锁定的列不能修改。
输入密码可以解除锁定。