Как извлечь только данные из столбцов файла excel в Spring boot

#java #spring #spring-boot #spring-mvc #smtp

Вопрос:

Вводя жестко закодированный файл excel, который состоит из рабочих часов в течение месяца, я должен проверить, у кого из сотрудников меньше 40 часов в неделю, извлечь их идентификатор и имя сотрудника и каждый понедельник отправлять электронное письмо с информацией об их деталях. Как мы можем извлечь только 5 рабочих дней и рассчитать их?

Ответ №1:

Html-файл для загрузки формы является

 lt;form th:action="@{/import}" method="post" enctype="multipart/form-data"gt;  lt;input type="file" th:name="file" /gt;  lt;input th:type="submit" value="Import" /gt; lt;/formgt;  

Класс контроллера является

 @PostMapping("/import") public void mapReapExcelDatatoDB(@RequestParam("file") MultipartFile reapExcelDataFile) throws IOException {    Listlt;Testgt; tempStudentList = new ArrayListlt;Testgt;();  XSSFWorkbook workbook = new XSSFWorkbook(reapExcelDataFile.getInputStream());  XSSFSheet worksheet = workbook.getSheetAt(0);    for(int i=1;ilt;worksheet.getPhysicalNumberOfRows() ;i  ) {  Test tempStudent = new Test();    XSSFRow row = worksheet.getRow(i);    tempStudent.setId((int) row.getCell(0).getNumericCellValue());  tempStudent.setContent(row.getCell(1).getStringCellValue());  tempStudentList.add(tempStudent);   } }  

Обязательно добавьте зависимость

 lt;dependencygt;  lt;groupIdgt;org.apache.poilt;/groupIdgt;  lt;artifactIdgt;poilt;/artifactIdgt;  lt;versiongt;3.12lt;/versiongt; lt;/dependencygt; lt;!-- excel 2007 over--gt; lt;dependencygt;  lt;groupIdgt;org.apache.poilt;/groupIdgt;  lt;artifactIdgt;poi-ooxmllt;/artifactIdgt;  lt;versiongt;3.12lt;/versiongt; lt;/dependencygt;  

И обязательно подключите spring к postgres с помощью драйверов

 spring.thymeleaf.cache=false spring.mvc.view.suffix=.html spring.datasource.url=jdbc:postgresql://localhost:5432/xxxxx spring.datasource.username=postgres spring.datasource.password=xxxxxx spring.jpa.properties.hibernate.hbm2ddl.auto=update spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true  

А также добавьте класс модели для столбца таблицы в соответствии со столбцами на листе excel, после чего вы сможете легко получить доступ к любому столбцу вашего листа Excel через базу данных в вашем коде в любом месте.