是否有可能使用Apache Poi创build一个Excelcheckbox?

有人问这个问题: 我如何使用Apache POI(Java)在Excel中创build表单控件(广播,checkbox,button等)? 之前,但没有答案呢。

也有可能使某些行只读?

不,据我所知,但你可以创build一个checkbox的Excel文件,你可以使用POI以这种方式读回到Java:

创build一个Excel文件,并保存为template.xlsm(所以与macros)。

在Excel文件中插入VBAmacros(使用'Developer'选项卡)并保存并closures文件:

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列为空)。 在这个例子中,我们将添加一个checkbox到“A”列的所有单元格中,在列“B”中有一个值/文本。 它检查从第3行到1000的每一行。

将工作簿写入文件:

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

创build一个文件:start_excel_file.vbs添加代码为文本:

 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()macros创buildcheckbox。 (必须启用macros!)

在这段代码中,我创build了一个在Excel文件中不可见的布尔型文本,但是如果select了这个布尔型文本,那么它将被设置为TRUE,之后将被取消selectFALSE。 如果您将POI文件读回到Java,它将忽略checkbox,但能够读取布尔文本,所以在Java中,您知道设置是什么。 (空或FALSE = false / TRUE为真)

希望这有助于和好运= ^)