gpt4 book ai didi

java - Apache POI 启用 excel 编辑

转载 作者:行者123 更新时间:2023-11-29 08:52:05 25 4
gpt4 key购买 nike

我正在使用 Apache POI 在 Java 中编辑 Excel。编辑 POI 后无法保存文件,因为 Excel 始终受到保护。如果打开,它将显示启用编辑的选项。将相同的文件复制到新的 Excel 将正常工作。但是有什么方法可以从 Java 为 Excel 启用编辑吗?这是我的代码示例:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Test3 {
public static void main(String args[]) {
try {
FileInputStream file = new FileInputStream(new File(
"New Microsoft Excel Worksheet.xlsx"));
// Document document = Jsoup.connect("http://www.google.com").get();
// Get the workbook instance for XLS file
XSSFWorkbook workbook = new XSSFWorkbook(file);
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
// Get first sheet from the workbook
XSSFSheet sheet = workbook.getSheetAt(i);

// Iterate through each rows from first sheet
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
XSSFRow row = (XSSFRow) rowIterator.next();

// For each row, iterate through each columns
Iterator<Cell> cellIterator = row.cellIterator();

while (cellIterator.hasNext()) {
// Do something
}

}
}
file.close();
FileOutputStream out = new FileOutputStream(
"New Microsoft Excel Worksheet.xlsx");
workbook.write(out);
out.close();
System.out.println("Done!!!!!!!!");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

我正在使用 excel 2007。

最佳答案

所以这证明是 Office 信任中心设置。当打开的文件中存在潜在的不安全内容时,无论 POI 设置如何,它都会在 protected View 中打开。

我能够通过将浏览器设置为将文件保存到文件夹而不是直接打开它(实际上将其保存到临时文件夹)来解决这个问题。然后我将该文件夹添加到 Office 信任中心的受信任位置。这告诉办公室可以打开此文件进行编辑,因为我信任打开它的位置。

Office support link describing this setting.

对于 Excel 2013 - 单击文件选项卡,然后选择选项信任中心信任中心设置

File->Options

添加将存储下载内容的位置。

Add new location

确保您的目录已添加。

See new location added.

虽然我同意这不是一个 POI 解决方案,但它是一个解决方案。是的,您可能必须帮助您的最终用户进行设置。

也许很快,Apache POI 团队将在未来的版本中添加一个 POI 解决方案,以编程方式执行此操作。

关于java - Apache POI 启用 excel 编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22294690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com