Как настроить XML-config для XLSReader - PullRequest
0 голосов
/ 24 октября 2019

Я использую org.jxls:jxls-reader для чтения некоторых данных из таблицы Excel. Строки начинаются с строки 20 Excel и должны читаться до тех пор, пока следующая строка не станет пустой. Но у меня проблемы с настройкой xml-config для чтения строк.

Каждая следующая строка после первой возвращает значение null.

Я пытался понять departmentdata.xls, предоставленный в http://jxls.sourceforge.net/reference/reader.html, но не могу его получитьправильно.

Буду признателен за понимание конфигурации.

Мой код в ExcelUploadController:

            InputStream xmlInputStream = new FileInputStream(xmlFile)

            XLSReader reader = ReaderBuilder.buildFromXML(xmlInputStream);

            InputStream xlsInputStream = dataFile.getInputStream();

            DocumentDetailPosition documentDetailPosition = new DocumentDetailPosition();

            List<DocumentDetailPosition> documentDetailPositions = new ArrayList<>();

            Map<String, Object> beans = new HashMap<>();

            beans.put("documentDetailPosition", documentDetailPosition);

            beans.put("documentDetailPositions", documentDetailPositions);

            XLSReadStatus status = reader.read(xlsInputStream, beans)

Мой xml-Config:

   <workbook>
       <worksheet name="worksheet1">
        <section startRow="0" endRow="19"/>
            <loop startRow="19" endRow="29" items="documentDetailPositions" var="documentDetailPosition" varType="pl.fissst.crm.esales.pojo.DocumentDetailPosition">
               <section startRow="19" endRow="29">
                   <mapping row="19" col="0" type="java.lang.Integer">documentDetailPosition.posProductNo</mapping>
                   <mapping row="19" col="1" type="java.lang.Integer">documentDetailPosition.quantity</mapping>
                   <mapping row="19" col="3"  type="java.util.Date">documentDetailPosition.requestDate</mapping>
               </section>
               <loopbreakcondition>
                   <rowcheck offset="0"/>
                   <cellcheck offset="0"></cellcheck>
               </loopbreakcondition>
           </loop>
       </worksheet>
    </workbook>

когда значения DocumentDetail напечатаны, журнал показывает:

INFO  885744 g.a.c.p.f.c.e.ExcelUploadController - 1234567
INFO  885744 g.a.c.p.f.c.e.ExcelUploadController - 5 
INFO  885746 g.a.c.p.f.c.e.ExcelUploadController - Thu Jan 03 00:00:00 CET 2019 

INFO  885746 g.a.c.p.f.c.e.ExcelUploadController - null 
INFO  885746 g.a.c.p.f.c.e.ExcelUploadController - null 
INFO  885746 g.a.c.p.f.c.e.ExcelUploadController - null 

Ожидаемое поведение: чтение всех строк

Фактический результат: чтение первой строки, а затем все равно null

...