之前,我们填写了个人数据表excel文件并打印出来。我现在正在开发一个在线系统来取代它,但我也包括了一个选项来生成完全相同的 excel 文件,完全由用户通过系统提供的信息填充。所以现在不是用户填写 excel 文件,而是用户通过在线系统填写,系统现在为他填写,然后下载完全填写。
但是,有些字段我无法填写。 Gender 字段由“男性”和“女性”两个 ActiveX 复选框对象组成,而 Civil Status 字段是一个组合框。如何设置字段的值并检查目标复选框的值?
我正在考虑获取 XSSFWorkbook
中的所有控件并迭代它们,检查每次传递是否是我想要处理的实际控件,但我不知道从哪里开始.
我已经能够填充可下载 excel 文件的所有其他字段,唯一剩下的部分是 Excel 控件。
最佳答案
ApachePOI 处理ActiveX 控件似乎没有希望了。同时,我使用以下方法实现了我想要的输出。
在 Excel 中打开您正在使用的模板,并将表单控件从 ActiveX 控件更改为表单控件。
检查其属性。右键单击表单控件并选择 Format Control... 您将看到类似这样的模态框。
在 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/