处理Apache POI上的Excel控件状态

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

然而,那里有我不能填补的领域。 性别字段由两个“男性”和“女性”的ActiveXcheckbox对象组成,而“公民身份”字段则是combobox。 我怎样才能设置字段的值,并检查目标checkbox的值?

我想获取XSSFWorkbook所有控件,并迭代它们,检查每个通道,如果它是我想要处理的实际控制,但我不知道从哪里开始。

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

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

  1. 打开您在Excel中使用的模板并将窗体控件从ActiveX控件更改为窗体控件。

    2

  2. 检查其财产。 右键单击窗体控件,然后select“ 格式化控件”...您会看到一个像这样的模式框。

    3

  3. 在“ 单元格链接”字段中,指定一个空单元格。 该单元格将保持布尔值为TRUE或FALSE,并将是由ApachePOI设置的。 因此,如果我将B1设置为我的单元格链接,然后将单元格的值设置为TRUE,则会检查引用表单控件

    相同的规则适用于combobox,但不是TRUE或FALSE,您需要指定要select的选项的索引。

以下是示例代码:

 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); 

在ActiveX控件上执行Cell Link:

1-转到开发者选项卡

2-点击devise模式

3-在checkbox上单击鼠标右键

4-转到“属性”选项

5-更改LinkedCell值

属性ActiveX控件

Apache Poi代码是一样的:

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