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

Apache POI-Excel-文件->密码->“建议只读”(如何禁用)

谷梁翰飞
2023-03-14

我有几个xlsx文件设置了“只读推荐”标志。

  • 是否有POI 5。x方法是否可用于禁用此复选框

我查看了POI XML属性,但没有运气。

共有1个答案

越雨泽
2023-03-14

在Office Open XML Excel文件中,“建议只读”设置存储在工作簿中。xml作为文件共享xml元素中的属性。

...
<fileSharing readOnlyRecommended="1"/>
...

这可以使用apache poi设置或取消设置,只能使用低级组织。openxmlformats。架构。电子表格ML。x2006。主要* -类。

完整示例:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;

import java.io.*;

class ExcelRemoveReadOnlyRecommended  {

 static void removeReadOnlyRecommended(XSSFWorkbook workbook) {    
  CTWorkbook ctWorkbook = workbook.getCTWorkbook();
  CTFileSharing ctfilesharing = ctWorkbook.getFileSharing();
  if (ctfilesharing != null) {
   ctfilesharing.setReadOnlyRecommended(false);
  }
 }
 
 public static void main(String[] args) throws Exception {
     
  String sourceFilePath = "./sourceFile.xlsx";
  String resultFilePath = "./resultFile.xlsx";
    
  Workbook workbook = WorkbookFactory.create(new FileInputStream(sourceFilePath));
  
  if (workbook instanceof XSSFWorkbook) {
   removeReadOnlyRecommended((XSSFWorkbook)workbook);
  }

  OutputStream out = new FileOutputStream(resultFilePath);
  workbook.write(out);
  out.close();
  workbook.close();
 }
}

如果源ile.xlsx设置了该选项,但没有密码,则在运行该代码后,结果ile.xlsx不再设置该选项。

如果也设置了密码,那么首先需要解密,文件共享中的密码也需要取消设置。当然,至少需要知道解密密码。

 类似资料:
  • 嗨,我想在第一行搜索一个字符串,如果找到了,我想移动那一列。

  • 问题内容: 我想用3列N行从Java读写Excel文件,在每个单元格中打印一个字符串。谁能给我简单的代码片段吗?我是否需要使用任何外部库,或者Java是否内置支持? 我要执行以下操作: 问题答案: Apache POI可以为你做到这一点。特别是HSSF模块。该快速指南是最有用的。这是你想做什么的方法-专门创建一张纸并将其写出来。

  • 问题内容: 我有一个密码保护Excel文件的问题。 情况是,我有一个zip文件,其中有一个Excel文件。我需要编写一个Java程序,以密码保护Excel文件。因此,用户应该能够解压缩文件(压缩文件无需密码保护)。但是,Excel需要使用密码保护。当用户尝试解压缩文件时,他应该能够解压缩。当他尝试打开Excel文件(位于解压缩的文件夹内)时,它必须要求输入密码。问题类似于使用Java保护excel

  • 我正在写一个程序,它需要从excel文件中读取和写入数据,而不考虑格式(xls或xlsx)。 我知道ApachePOI,但它似乎有不同的类来处理xls文件(HSSF)和xlsx(XSSF)文件。 任何人都知道我将如何实现我在这里的目标。(也欢迎使用POI以外的API的想法)。

  • 我是编程界的新手。嗯,我正在尝试使用ApachePOI库读取excel文件(5行5列)。我实际上有两个相同问题的实现。在第一个代码片段中,我只是读取excel文件并将其打印到控制台中。 然而,现在我正试图将读取的excel数据保存到一个数组中。所以我想在动态获取excel行和列大小后设置数组大小。但令我惊讶的是,当我执行第二个代码段时,似乎“while(cellIterator.hasNext()

  • 我是一名nodejs程序员。现在我有了一个我想以Excel文件格式保存的数据表。我该怎么做呢? 我找到了几个节点库。但大多数都是Excel解析器而不是Excel编写器。我使用的是Linux服务器。因此需要一些可以在Linux上运行的东西。请让我知道,如果有任何有用的图书馆,你知道。