- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个程序可以生成包含大量数据的报告。我使用 Apache POI SXSSF 生成 xlsx 文件,一切正常。 http://poi.apache.org/spreadsheet/index.html
我在他们的文档中找不到如何使用密码保护整个工作簿。我希望这样,如果有人尝试打开该文件,他们需要输入密码才能查看数据。
请记住,这与保护单个工作表的密码不同,在后者中,他们仍然能够打开文件并查看数据,但具有只读访问权限。
我在 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)
有人知道如何做到这一点吗?还将考虑替代解决方法。
提前致谢。
更新
我考虑过可能使用启用宏的工作簿和脚本来对其进行密码保护,如此处建议的那样。 Java Apache Poi SXSSF with Excel Macros
我使用此处的 VBA 代码来执行此操作:http://analysistabs.com/excel-vba/protect-unprotect-workbook/然后在创建 Excel 文件时使用该文件作为模板,但当我使用宏时,发现这还不够。某些计算机安全设置设置为“高”并且将禁用宏,因此当我打开文件时,我确实收到了输入密码的提示,但随后我还收到了一条警告消息,指出宏已被禁用,并且我能够查看工作簿内容。
有什么建议吗?
最佳答案
" ... I couldn't find in their documentation is how to password protect ..."???
你看到菜单项"Encryption support"了吗?在 poi 主页的左侧菜单中?
要在打开(即读取)文件时请求密码提示,您需要对其进行加密 - 请参阅 "XML-based formats - Encryption"
并且 stackoverflow 喜欢将所有内容集中在一处 - 这是代码:
// 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();
关于java - 如何通过SXSSF保护Excel工作簿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40898448/
根据SXSSF (Streaming Usermodel API) documentation : SXSSF (package: org.apache.poi.xssf.streaming) is
我有一个 .xlsx 文件,其中包含包含不同数据的多个工作表。在所有的Sheet中,一张需要容纳近10万行数据,而且数据需要用Java和poi编写。 这对于 SXSSFWorkbook 来说似乎非常快
我正在尝试在流式工作簿 (SXSSFWorkbook) 中创建 Excel 表。 API 不直接支持它,但我通过访问底层 XSSFWorkbook (workbook.getXSSFWorkbook)
我正在尝试使用 SXSSF 读取 xls 文件。我读过 SXSSF,但不明白如何使用它。所以我遇到了一些问题。 任何人都可以帮助我读取大型 xls 文件(大约 100,000 行和 7-8 页)的 j
问题 在 SXSSF 工作簿中: 如何设置字体? 如何将细胞类型设置为日期? 上下文 我需要编写一个包含大量行和列(400.000 行,每行 50 个字段)的 excel .xlsx 文件,所以我使用
我正在使用 SXSSF 编写 100 万条(最坏情况)记录。 以下是我编码的方式。 我必须将记录写入已经存在的 Excel 模板。这个 模板是 在类路径中可用。我将把这个模板复制到一个普通的 地点。使
在我的项目中,我使用 SXSSFWorkbook (Apache-POI 3.9) 类来管理大型电子表格。现在我需要评估某些单元格的公式,所以我尝试使用像这样的 FormulaEvaluator ..
我的表中有 500 行。当我使用 setRandomAccessWindowSize(1000) 时,它工作正常。数据已从结果集中成功导出到 Excel 文件中,但是当我使用 setRandomAcc
我正在使用 Apache POI 库将大量数据导入 Excel 文件。我不能使用 HSSF 模型,因为它需要太多内存并且 Java 会抛出内存堆异常。我发现的方法是 SXSSF 工作簿模型,它将每 N
我有一个问题。我是对的,如果我有一个通过 xssf 构造函数创建的工作簿,那么将构造函数更改为 sxssf 工作簿就足够了(使用 xssf wb 作为参数传递)以使其在 流模式 下工作?非常感谢您的回
我正在尝试编写一个巨大的 excel 文件,我的要求允许我写下行然后忘记,所以我正在使用 SXSSF这只允许在内存中保留少数行,其余的都写入文档。这有助于克服大文件的内存不足异常。 但我还需要使用 s
我需要读取大型 excel 文件并将其数据导入我的应用程序。 由于 POI 占用大量堆工作,经常抛出 OutOfMemory 错误,我发现有一个 Streaming API 用于串行处理 excel
我想将 SXSSF 转换器与 JXLS 一起使用。我试图以这样一种方式编写我的模板,即我不会得到“试图在已经写入磁盘的范围内写入一行”异常。该模板捕获已知列(例如“HEADER 0”)和未知列(以“_
使用 POI 时 XSSFWorkbook ,单元格(通过生成的 xlsx 文件内的 sharedStrings.xml)会自动保留空白,即 sharedStrings.xml 中的条目看起来像
我有一个包含宏 (.xlsm) 的 Excel 模板,我想读入它,向其中添加一百万行并将其写出。 我知道使用包含宏的 POI 读取和重写文件将保留宏。我需要使用 SXSSF(内存限制)写出 Excel
我能够使用 XSSF 读取现有的 xlsm,并使用 SXSSF 将数据写入工作表。最后使用 Outputstream 将其输出为另一个 xlsm。 SXSSF在文档中提到用于编写xlsx 读取和写入大
我正在使用 POI () 的流式工作表编写一个大型 Excel 工作表(超过一百万条记录),但出现 java.lang.OutOfMemoryError: Java heap space。这是我的代码
正在尝试使用 apache POI 3.17 在应用程序上实现 excel 导出功能。 在我的本地 tomcat 服务器和 Windows 开发环境中,一切都运行良好。但是,SXSSFWorkbook
我在使用 SXSSF poi api 生成有效的 xlsx 文件时遇到问题。如果我使用以下代码,则会生成正确的 Excel 文件:工作簿 wb = new XSSFWorkbook();但如果我使用失
我有一个包含 400,000 行的大型 .xlsx Excel 工作表。我想在这个现有的工作簿中阅读和写作。 当我尝试使用 Apache poi 在 java 中读取它时,代码如下: FileInpu
我是一名优秀的程序员,十分优秀!