关于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,然后设置密码,结果不管用,不知道什么原因,不过问题总算还是解决了。

posted @ 2012-04-18 10:19  Lyble  阅读(2233)  评论(4编辑  收藏  举报