终于解决了,、
1.用excel新建一个文件作为模板,可以是空内容,在excel中对文件进行加密,如密码为:12345。
2.在NPOI读取前,调用:Biff8EncryptionKey.CurrentUserPassword = "12345";
3.在读取后调用: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,然后设置密码,结果不管用,不知道什么原因,不过问题总算还是解决了。
终于解决了,
必须用模板,有点蛋疼啊