Нет, не так далеко, как я знаю, но вы не можете создать Excel файл с флажками, которые вы можете прочитать обратно в Java, используя POI таким образом:
Создать файл Excel и сохранить как template.xlsm (так с макросами).
Вставка VBA макросов в файле Excel (вкладка используйте 'Developer') и сохранить + закрыть файл:
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 читать это первенствовать файл как новый Workbook:
Workbook wb = WorkbookFactory.create(new File("path to your file/template.xlsm"));
Напишите все ваши данные в файл (держите столбец «Пусто» для этого примера!). В этом примере мы добавим флажок ко всем ячейкам в столбце «A», которые имеют значение/текст в столбце «B». Он проверяет каждую строку из строки 3 до 1000.
Написать Workbook в файл:
FileOutputStream out = new FileOutputStream("path to your file/file_with_checkboxes.xlsm");
Создайте файл: 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(). (Макрос должен быть включен!)
В этом коде я создал логический текст, который не отображается в файле Excel, но будет установлен в TRUE, если выбрано, и FALSE будет отменено после этого. Если вы прочитаете файл с POI обратно в Java, он будет игнорировать флажки, но сможет читать логический текст, поэтому в Java вы знаете, что это за параметр. (пусто или FALSE = false/TRUE истинно)
надеюсь, что это поможет и удачи = ^)