有時,我們可能需要某些單元格只讀,如在做模板時,模板中的數據是不能隨意讓別人改的。在Excel中,可以通過“審閱->保護工作表”來完成,如下圖:
那么,在NPOI中有沒有辦法通過編碼的方式達到這一效果呢?答案是肯定的。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
ISheet sheet1 = hssfworkbook.CreateSheet(
"Sheet1"
);
IRow row1 = sheet1.CreateRow(0);
ICell cel1 = row1.CreateCell(0);
ICell cel2 = row1.CreateCell(1);
ICellStyle unlocked = hssfworkbook.CreateCellStyle();
unlocked.IsLocked =
false
;
ICellStyle locked = hssfworkbook.CreateCellStyle();
locked.IsLocked = true ;//確定當前單元格被設置保護
cel1.SetCellValue(
"沒被鎖定"
);
cel1.CellStyle = unlocked;
cel2.SetCellValue(
"被鎖定"
);
cel2.CellStyle = locked;
sheet1.ProtectSheet( "password" );//設置密碼保護
|
正如代碼中所看到的,我們通過設置CellStype的IsLocked為True,表示此單元格將被鎖定。相當於在Excel中執行了如下操作:
然后通過ProtectSheet設置密碼。
執行結果如下:
沒被鎖定的列可以任意修改。
被鎖定的列不能修改。
輸入密碼可以解除鎖定。
以上只是對單個Cell的設置,其實還可以以行或列設置數據的保護,
行保護:row.RowStyle.IsLocked = true;
列保護:sheet.GetColumnStyle(0).IsLocked = true;獲得所在的列 然后設置屬性
由此我們可以控制以Excel的行,列,以及單元格為基本單位實現密碼的保護。