java - 是否可以锁定在 apache poi 中解锁的 excel 表离开组大纲功能?
问题描述
我使用 apache poi 创建了以下示例
使用以下代码
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static final String file = "C:\\Users\\Deepak\\IdeaProjects\\Test\\src\\main\\resources\\test.xlsx";
public static void main(String[] args) throws IOException {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("sheet1");
for(int row = 0;row < 10;row++) {
Row rowI = sheet.createRow(row);
Cell cell = rowI.createCell(0);
cell.setCellValue("cell"+row+'0');
}
sheet.groupRow(1, 5);
sheet.setRowGroupCollapsed(1, true);
sheet.protectSheet("dummy");
workbook.write(new FileOutputStream(new File(file)));
}
}
工作表已锁定,但折叠 (+) 功能也已锁定。我不希望折叠按钮被锁定。有没有办法解决这个问题?
我用谷歌搜索了这个,但没有找到任何关于 apache POI 的东西。我在这里找到了 VBA 的解决方案,并试图在 apache poi 中找到类似的方法(enableOutlining),但没有找到。
我正在使用 Apache POI 3.9
任何帮助/指导将不胜感激
解决方案
不,这是不可能的。在工作表受到保护时,没有启用大纲的设置。至少没有一个存储在文件中。
有Worksheet.EnableOutlining。但这只有在设置了纸张保护时才能设置UserInterfaceOnly:=True
。这意味着只有在Excel
's中打开工作簿时保护才有效GUI
。
请参阅http://www.spreadsheet1.com/outlining.html。还有Excel: EnableOutlining 在打开 workbook 时似乎默认为 False。
结论:仅当工作簿包含VBA
并且能够运行宏并运行该VBA
保护代码时才有可能,而Workbook_Open()
.
推荐阅读
- c - C - 字符串指针数组 - 如何动态分配内存
- angular - 使用打字稿在角度级联下拉菜单
- c++ - 在公共库上使用`target_sources`时CMake构建文件两次
- ios - cordova-youtube-video-player 不工作 iOS XCDYouTubeKit
- node.js - 错误“Write ECONNRESET”一般是什么意思?
- java - 涉及的静态字段的值发生变化后,布尔值保持为假
- opencv-python - OpenCV:dtype对象的图像数据无法转换为浮点数
- python - 将数据框列标题分配到数据框行并堆叠列值
- android - [FCM][Android] AndroidManifest.xml 中设置的 Firebase 通知通道尚未创建
- scala - Scala 3 类型类失败:given_... 已在范围内定义为类