是否可以使用Apache Poi创建Excel复选框?

时间:2014-09-16 15:38:15

标签: excel apache-poi

之前有人问过这个问题:How do I create form controls (radio, checkbox, buttons, etc.) in Excel using Apache POI (Java)?但尚无答案。

还可以将某些行设为只读吗?

1 个答案:

答案 0 :(得分:0)

不,据我所知,但你可以创建一个带有复选框的Excel文件,你可以用这种方式使用POI读回Java:

创建一个Excel文件并保存为template.xlsm(所以使用宏')。

在Excel文件中插入VBA宏(使用'开发人员'标签)并保存+关闭文件:

Sub addCheckBoxes()
Dim i As Integer
Dim cel As Range
i = 2
For Each cel In Sheets("Sheet1").Range("A" & 3 & ":A" & 1000)
    i = i + 1
    If Cells(i, "B").Value <> "" Then
        cel.Value = 0
        With ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Left:=cel.Left, Top:=cel.Top, Width:=cel.Width, Height:=cel.Height)
            .LinkedCell = "Sheet1!$A$" & i
            .Object.Caption = "<-use"
        End With
    End If
Next
End Sub

让POI将此excel文件作为新工作簿阅读:

Workbook wb = WorkbookFactory.create(new File("path to your file/template.xlsm"));

将所有数据写入文件(在此示例中,将A列保持为空!)。在此示例中,我们将向列中的所有单元格添加一个复选框,即“A&#39;在列&#39; B&#39;中有值/文字。它会检查从第3行到第1000行的每一行。

将工作簿写入文件:

FileOutputStream out = new FileOutputStream("path to your file/file_with_checkboxes.xlsm");

创建一个文件:start_excel_file.vbs add将代码添加为文本:

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("path to your file/file_with_checkboxes.xlsm")
objExcel.Application.Visible = True
objExcel.Application.Run "file_with_checkboxes.xlsm!addCheckBoxes" 

通过运行此文件,使用Java通过命令行打开文件:start_excel_file.vbs

start_excel_file.vbs文件中的代码将打开excel文件,在启动时,它将使用addCheckBoxes()宏创建复选框。 (必须启用微距!)

在此代码中,我创建了一个在Excel文件中不可见的布尔文本,但如果选中则将设置为TRUE,之后取消选择FALSE。如果您将带有POI的文件读回Java,它将忽略复选框,但能够读取布尔文本,因此在Java中您知道设置是什么/。 (空或FALSE = false / TRUE为真)

希望这会有所帮助,祝你好运= ^)