1 workbook.WriteProtectWorkbook("password", "admin"); 还是可以进去 只读进去 可以编辑 编辑就另存为  1 npoi 网上 不用模板 设置密码  workbook.WriteProtectWorkbook("password", "admin");    、、     2  locked.IsLocked = true;  sheet1.ProtectSheet("password");NPOI操作EXCEL--设置密码才可以修改单元格内容     3 模板设置密码  确定原密码 设置新密码-LMLPHP

2

HSSFCellStyle locked = hssfworkbook.CreateCellStyle();
locked.IsLocked = true;

cel1.SetCellValue("没被锁定");
cel1.CellStyle = unlocked;

cel2.SetCellValue("被锁定");
cel2.CellStyle = locked;

sheet1.ProtectSheet("password");

1 npoi 网上 不用模板 设置密码  workbook.WriteProtectWorkbook("password", "admin");    、、     2  locked.IsLocked = true;  sheet1.ProtectSheet("password");NPOI操作EXCEL--设置密码才可以修改单元格内容     3 模板设置密码  确定原密码 设置新密码-LMLPHP

3  模板设置密码  读取模板确定原密码 设置新密码

用excel新建一个文件作为模板,可以是空内容,在excel中对文件进行加密,如密码为:12345。

.在NPOI读取前,调用:Biff8EncryptionKey.CurrentUserPassword = "12345";

.在读取后调用:hssfworkbook.WriteProtectWorkbook("new Password", "user");

C# code

 
1
2
3
4
5
6
7
8
9
10
11
12
string path = @"E:\test.xls";//刚用excel新建的模板文件
FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read);
Biff8EncryptionKey.CurrentUserPassword = "12345";//打开前调用
HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);
hssfworkbook.WriteProtectWorkbook("123456""");//设置新密码
file.Close();
ISheet sheet = hssfworkbook.GetSheetAt(0);
// 插入数据操作。。。
//保存文件
FileStream savefile = new FileStream(@"E:\test1.xls", FileMode.Create);
hssfworkbook.Write(savefile);
savefile.Close();

我试过不用模板,而直接新建workbook,然后设置密码,结果不管用,不知道什么原因,不过问题总算还是解决了。

注 千万记住 如果第三种方法 试了 报错  Name is too long

那就是 模板所属用户问题

1 npoi 网上 不用模板 设置密码  workbook.WriteProtectWorkbook("password", "admin");    、、     2  locked.IsLocked = true;  sheet1.ProtectSheet("password");NPOI操作EXCEL--设置密码才可以修改单元格内容     3 模板设置密码  确定原密码 设置新密码-LMLPHP

1 npoi 网上 不用模板 设置密码  workbook.WriteProtectWorkbook("password", "admin");    、、     2  locked.IsLocked = true;  sheet1.ProtectSheet("password");NPOI操作EXCEL--设置密码才可以修改单元格内容     3 模板设置密码  确定原密码 设置新密码-LMLPHP

左边是对的

05-12 18:06