#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 через базу данных в вашем коде в любом месте.