关于NPOI加密问题

 网上很多关于NPOI关于加密的资源,都是关于单元格加密的,而不是对整个文件加密,今天弄了好久,终于找到解决方法了。

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

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

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

代码如下(注:我用的是1.2.5版本的):

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

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

转载于:https://www.cnblogs.com/Lyble/archive/2012/04/18/2454889.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用 NPOI 操作 Excel 文件时,可以通过设置密码来加密 Excel 文件。具体来说,可以在创建 Excel 文件时设置密码,或者在打开已有 Excel 文件时设置密码。 以下是在创建 Excel 文件时设置密码的示例代码: ```csharp using (var workbook = new XSSFWorkbook()) { // 创建工作表等操作 // 设置密码 var password = "mypassword"; var sheet = workbook.GetSheetAt(0); sheet.ProtectSheet(password); // 保存文件 using (var fileStream = new FileStream("myencryptedfile.xlsx", FileMode.Create, FileAccess.Write)) { workbook.Write(fileStream); } } ``` 以上代码中,`sheet.ProtectSheet(password)` 方法用于设置工作表的保护密码,`workbook.Write(fileStream)` 方法用于将 Excel 文件写入到文件流中。在保存文件时,文件会被加密,并且需要输入正确的密码才能打开。 如果想要在打开已有 Excel 文件时设置密码,可以使用 `ExcelPackage` 类的 `FileEncryptor` 属性来加密文件。以下是一个示例代码: ```csharp using (var package = new ExcelPackage(new FileInfo("myexistingfile.xlsx"))) { // 对 Excel 文件进行操作 // 设置密码 var password = "mypassword"; package.FileEncryptor.SetPassword(password); // 保存文件 package.Save(); } ``` 以上代码中,`ExcelPackage` 类用于打开已有的 Excel 文件,`package.FileEncryptor.SetPassword(password)` 方法用于设置文件的密码,`package.Save()` 方法用于保存文件。在保存文件时,文件会被加密,并且需要输入正确的密码才能打开。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值