Spire.XLS is a professional Excel API that enables developers to create, manage, manipulate, convert and print Excel worksheets. Get free and professional technical support for Spire.XLS for .NET, Java, Android, C++, Python.

Wed Dec 06, 2023 9:54 am

源代码:
@Test
void testPwd() {
// 加载文件流
try (FileInputStream fileInputStream = new FileInputStream("D:\\work\\test\\file-parse\\excel\\testPwd.xlsx");) {
//boolean passWordProtected = Document.isPassWordProtected(inputStream);

Locale.setDefault(Locale.ROOT);
Workbook workbook = new Workbook();
workbook.setOpenPassword("1010");
workbook.loadFromStream(fileInputStream);
// 获取工作表,sheet1、sheet2...
WorksheetsCollection worksheets = workbook.getWorksheets();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < worksheets.size(); i++) {
Worksheet worksheet = worksheets.get(i);
String name = worksheet.getName();
// 间隔开工作表表名
sb.append(name).append(",");
for (int rowNum = worksheet.getFirstRow(); rowNum <= worksheet.getLastRow(); rowNum++) {
for (int columnNum = worksheet.getFirstColumn(); columnNum <= worksheet.getLastColumn(); columnNum++) {
String text = worksheet.getText(rowNum, columnNum);
if (StrUtil.isNotBlank(text)) {
sb.append(text.trim());
}
}
}

System.out.println(sb);
}
} catch (IOException e) {
e.fillInStackTrace();
}
}
设置了正确的密码报空指针,通过设置错误的密码可以确定文件流是加载到了的。
错误密码报错:
class com.spire.office.packages.sprihg: Invalid password.

运行环境:windows11、IntelliJ IDEA 2023.2、org.junit.jupiter.api.Test、spire.office.free(5.3.1)

chengkong
 
Posts: 9
Joined: Wed Dec 06, 2023 9:48 am

Thu Dec 07, 2023 3:29 am

您好,

感谢您的咨询。
根据您的描述,我模拟了一个加密的Excel文件做了初步测试,但是没有复现您提到的问题。由于我们对于免费版是不维护的,因此我们建议您先使用我们的商业版(最新版本为Spire.Office for Java版本: 8.11.3)来测试,它包含的修复和新功能远多于免费版。如果测试之后问题还是存在,请提供您的测试Excel文件和您项目使用的jdk版本(如jdk1.8)以便我们更好的调查您的问题。您可以将这些信息直接附在此帖上或通过邮件([email protected])发送给我们。提前感谢。

Sincerely,
Annika
E-iceblue support team
User avatar

Annika.Zhou
 
Posts: 1657
Joined: Wed Apr 07, 2021 2:50 am

Thu Dec 07, 2023 7:19 am

你好,我换成商业版的测试了,还是会报空指针异常。
JDK版本:
openjdk version "1.8.0_332"
OpenJDK Runtime Environment (Zulu 8.62.0.19-CA-win64) (build 1.8.0_332-b09)
OpenJDK 64-Bit Server VM (Zulu 8.62.0.19-CA-win64) (build 25.332-b09, mixed mode)

Excel文件见上传的附件,密码是1010,我是使用wps软件创建文件设置密码的。
Attachments
testPwd.zip
(9.61 KiB) Downloaded 858 times

chengkong
 
Posts: 9
Joined: Wed Dec 06, 2023 9:48 am

Thu Dec 07, 2023 7:35 am

我使用Microsoft Excel创建并设置了密码的文件,就可以提取到内容,看来是不支持wps保存的文件?

chengkong
 
Posts: 9
Joined: Wed Dec 06, 2023 9:48 am

Thu Dec 07, 2023 8:15 am

您好,

感谢您提供的信息。
我在win11环境下测试了您提供的Excel文件,但是仍然没有问题。在此附上我的测试项目,请下载并在您那边测试。
另外,我们的产品是以微软Office为规则的,但也兼容了WPS的规则,因此是支持WPS创建的文档的。

Sincerely,
Annika
E-iceblue support team
Attachments
JavaTest07.zip
(25.59 KiB) Downloaded 886 times
User avatar

Annika.Zhou
 
Posts: 1657
Joined: Wed Apr 07, 2021 2:50 am

Thu Dec 07, 2023 9:11 am

你好,

感谢你提供的文件。
我下载解压后使用idea打开并运行了,可以提取到内容。
我总结一下:目前只试了Excel文件,在提供密码的情况下,free版本可以提取微软Excel加密的内容,但是不能提取wps的Excel内容,会报空指针异常。商业版本则两者的内容都可以提取。

感谢您的解答。

chengkong
 
Posts: 9
Joined: Wed Dec 06, 2023 9:48 am

Thu Dec 07, 2023 9:39 am

您好,

不客气。
我们不维护免费版的,因此如果您要提取使用WPS创建的加密文档的内容,请使用商业版测试。为了帮助你更好的测试我们的产品,我们可以给您提供一个免费的一个月的临时授权。如果您需要,请通过链接https://www.e-iceblue.cn/misc/temporary-license.html申请。
如果您还有其他问题,欢迎您随时咨询。

Sincerely,
Annika
E-iceblue support team
User avatar

Annika.Zhou
 
Posts: 1657
Joined: Wed Apr 07, 2021 2:50 am

Return to Spire.XLS