当前位置: 首页 > 知识库问答 >
问题:

如何通过SXSSF保护Excel工作簿?

解宏扬
2023-03-14

请记住,这与保护单个工作表的密码不同,在单个工作表中,用户仍然能够打开文件并查看数据,但具有只读访问权限。

我在SXSSFWorkbook文档中没有找到任何东西:https://poi.apache.org/apidocs/org/apache/poi/xssf/streaming/SXSSFWorkbook.html

看起来XSSFWorkbook有一个名为setWorkbookPassword的方法,但SXSSF不存在这个方法,而且不能在SXSSFWorkbook上工作。https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/xssfworkbook.html#setworkbookpassword(java.lang.string,%20org.apache.poi.poifs.crypt.hashalgorithm)

我使用了这里的VBA代码:http://analysistabs.com/excel-vba/protect-unprotect-workbook/,然后在创建Excel文件时使用该文件作为模板,但当我使用宏时,发现它是不够的。某些计算机安全设置被设置为“高”并将禁用宏,因此当我打开文件时,我确实得到了输入密码的提示,但随后我也得到了一条警告消息,说明宏已禁用,并且我可以查看工作簿内容。

有什么建议吗?

共有1个答案

燕嘉熙
2023-03-14

“……我在他们的文档里找不到是怎么密码保护的……”???

你看到poi主页左侧菜单中的“加密支持”菜单项了吗?

要在打开(即读取)文件时请求密码提示,需要对其进行加密-请参阅“基于XML的格式-加密”

// create a new POIFSFileSystem, which is the container for 
// encrypted OOXML-based files  
POIFSFileSystem fs = new POIFSFileSystem();
EncryptionInfo info = new EncryptionInfo(EncryptionMode.agile);

// setup the encryption
Encryptor enc = info.getEncryptor();
enc.confirmPassword("foobaa");

// after writing to the SXSSF workbook you need the content
// as a stream
InputStream is = <open the SXSSF workbook as stream>
OutputStream os = enc.getDataStream(fs);
// copy the stream to the OutputStream
IOUtils.copy(is, os);

// Write out the encrypted version
FileOutputStream fos = new FileOutputStream("...");
fs.writeFilesystem(fos);
fos.close();
 类似资料:
  • 我一直在寻找一个工作表保护问题的解决方案,我有一个工作表,其中包括从顶部的一些字段将数据写入下面的工作表的自动脚本。我希望用户能够在顶部的字段中提供数据,然后运行脚本添加下面的数据。如果启用了保护,则用于添加数据的脚本对工作表的所有者来说可以正常工作,但对于任何具有编辑权限的用户来说都无法正常工作,因为脚本无法清除将数据写入工作表底部的保护。 https://developers.googlebl

  • 我有一个与Excel工作表保护有关的问题... 上下文是,我需要有不同的工作表可供不同的用户组编辑,但所有组必须至少看到所有工作表,例如,usergroup1可以编辑工作表2和工作表3以及工作表1的一部分,usergroup2只能编辑工作表1。 我可以相应地设置FormatProtection()和WorksheetProtection()来启用此功能,但我似乎没有能力通过API针对工作表保护设置

  • 问题内容: 我正在使用Apache POI生成Excel文件(2007)。我要保护的是工作表,但是启用了一些选项。选项是指您尝试保护Excel应用程序中的工作表时的复选框列表(在标签“允许此工作表的所有用户访问:”下)。具体来说,我想启用“选择锁定/未锁定的单元格”,“设置格式列”,“排序”和“允许自动过滤”。非常感谢你!:D 问题答案: 在Apache POI 3.9中,可以通过启用锁定功能来使

  • 我正在使用Apache POI生成一个Excel文件(2007)。我想要的是保护工作表,但启用了一些选项。我所说的选项是指试图保护Excel应用程序中的工作表时的复选框列表(在标签“允许此工作表的所有用户:”下)。具体地说,我希望启用“选择锁定/解锁单元格”、“格式化列”、“排序”和“允许自动筛选”。非常感谢!:d

  • 我已经通过创建一个安全领域在JBoss EAP 7.2上启用了SSL 我已经更新了远程子系统,使用默认的connector-ref作为https 当我试图从一个独立的Java类访问< code > http-remoting://127 . 0 . 0 . 1:8443 时,我在获取连接工厂时得到以下错误 请帮助解决。我是否缺少任何配置。

  • 问题内容: 我注意到我的网站上有奇怪的请求,试图找到phpmyadmin,例如 等等 现在,我已经通过apt在Ubuntu上安装了PMA,并希望通过不同于/ phpmyadmin /的网址访问它。我该怎么做才能改变它? 谢谢 更新资料 对于Ubuntu 9.10和Apache2,相应的设置位于该文件的链接中。该文件包含 如果要避免不必要的活动,则应将第一个更改为其他内容,例如: 问题答案: 最大的