java - 处理 Apache POI 上 Excel 控件的状态

标签 java excel apache-poi

之前,我们填写了个人数据表excel文件并打印出来。我现在正在开发一个在线系统来取代它,但我也包括了一个选项来生成完全相同的 excel 文件,完全由用户通过系统提供的信息填充。所以现在不是用户填写 excel 文件,而是用户通过在线系统填写,系统现在为他填写,然后下载完全填写。

但是,有些字段我无法填写。 Gender 字段由“男性”和“女性”两个 ActiveX 复选框对象组成,而 Civil Status 字段是一个组合框。如何设置字段的值并检查目标复选框的值?

我正在考虑获取 XSSFWorkbook 中的所有控件并迭代它们,检查每次传递是否是我想要处理的实际控件,但我不知道从哪里开始.

我已经能够填充可下载 excel 文件的所有其他字段,唯一剩下的部分是 Excel 控件。

最佳答案

ApachePOI 处理ActiveX 控件似乎没有希望了。同时,我使用以下方法实现了我想要的输出。

  1. 在 Excel 中打开您正在使用的模板,并将表单控件从 ActiveX 控件更改为表单控件。

    2

  2. 检查其属性。右键单击表单控件并选择 Format Control... 您将看到类似这样的模态框。

    3

  3. Cell Link 字段中,指定一个空单元格。该单元格将包含一个 boolean 值 TRUE 或 FALSE,并且将由 ApachePOI 设置。 因此,如果我将 B1 设置为我的单元格链接,然后将单元格的值设置为 TRUE,将检查引用表单控件

    相同的规则适用于组合框,但您需要指定要选择的选项的索引,而不是 TRUE 或 FALSE。

示例代码如下:

CellReference cr = new CellReference("B1");
XSSFRow row = currentActiveSheet.getRow(cr.getRow());
XSSFCell cell = row.getCell(cr.getCol());

cell.setCellValue(value);
cell.setCellType(Cell.CELL_TYPE_BOOLEAN);

关于java - 处理 Apache POI 上 Excel 控件的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43626000/

相关文章:

vba - VBA 中的 "Object variable or With block variable not set"

excel - 使用 CDO.sys dll 在 VBA 中发送消息会卡住 Excel

java - 从 Excel 工作表读取日期值 (Java)

java - 在 Servlet 端使用 excel 表生成内存中的 zip 文件

java - 单击按钮时应用程序崩溃

java - 拦截日志消息 slf4j

圆括号中的 Java 正则表达式

java - Kryonet 客户端超时后断开连接

excel - 将 Outlook "Run as Script"规则集成到发送电子邮件的 Excel VBA 代码中

java - 使用 Apache-POI 获取 docx 的每个段落的行