2014-09-16 3 views

ответ

0

Нет, не так далеко, как я знаю, но вы не можете создать 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 истинно)

надеюсь, что это поможет и удачи = ^)

Смежные вопросы