NPOI設置Excel保護


有時,我們可能需要某些單元格只讀,如在做模板時,模板中的數據是不能隨意讓別人改的。在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的行,列,以及單元格為基本單位實現密碼的保護。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM