访问使用Java创build的Excel文件的权限

我正在创build一个Excel文件,它应该是只读的。 为此,我使用: (sheetName).getSettings().setProtected(true); 每添加一张新纸张。

只有拥有pipe理员权限的用户才能完全访问该文件,因此在确认用户具有pipe理员权限后,我可以: (workbookName).getSheet(0).getSettings().setProtected(false);

拥有pipe理员权限的用户打开文件后,它不再是只读的,直到普通用户向其中添加更多内容为止 – .getSettings().setProtected(true); 再次。 换句话说,有人可以在pipe理员访问之后和非pipe理员之前更改文件。 我不知道该怎么办,也许你可以帮我一把吗?

– 编辑 –
用户正在向excel文件添加数据,用信息文件填充单元格 – 读取工作簿,复制,添加一些信息,编写和closures工作簿。 非pipe理员用户可以直接打开它,看看他们添加了什么,或者看看其他用户添加了什么,但他们不应该能够改变文件中的任何东西。

这是一个类似向导的应用程序,要求用户input数据,然后将单元格添加到文件中。 这里是添加数据的一种方法。 该文件收集用户的个人信息。 该应用程序只用于添加数据,而不是访问它。 用户只能通过双击输出直接访问文件,只能查看数据。 pipe理员可以更改文件,其他用户不应该能够这样做。

如果您愿意为商业软件付费,最新版本的ExtenXLS对Excel支持的所有encryption格式具有完全的读写支持。 只需构build一个EncryptedWorkBookHandle而不是正常的WorkBookHandle 。 这将使用未经修改的JRE支持的最强密码,用于XLS的RC4和用于XLSX的128位AES。 如果您想在OOXML中使用256位AES,并且安装了JCE unlimited策略 ,则可以使用MSOfficeEncrypter类来完成。

JExcelAPI是一种广受欢迎的开源Java电子表格API,似乎根本不支持encryption。 Aspose.Cells是一个商业产品, 支持强大的encryption 。 Actuate的e.Spreadsheet的文档似乎已经从网上消失了,所以我不知道它是否支持encryption。

由于没有免费的Java电子表格API似乎支持编写encryption的电子表格,如果你不愿意使用商业软件,你需要提出一个解决方法。 例如,您可以将电子表格写入encryption的ZIP文件。 java.util.zip不支持encryption,但看起来像Zip4j 。

这是因为你告诉用户可以简单地编辑它,当pipe理员删除保护,似乎没有标准的select。 但是,如果这个文件正在使用,那么没有其他人可以修改它以外的权利? 所以简单地保护它,当pipe理退出excel文件,并删除保护当pipe理员login。像蒂姆说。 你可以创build单独的函数来编辑excel文件,然后执行

禁用保护写入修改启用保护

在所有这些function。 如果这是可行的,你可以使用像AspectJ的东西来简化禁用保护和启用保护部分;