Как добавить данные json в шаблонный файл excel с помощью загрузки spring?

У меня есть один шаблон для файла Excel, который содержит заголовок и кнопку. Как мне добавить данные JSON в этот файл с помощью Spring Boot?

Как начать добавлять данные из определенной строки в файл Excel и загружать их в определенное место?

Поделитесь, пожалуйста, кодом, который вы пробовали.

Amit Kumar Lal 26.10.2018 09:24

вы можете поделиться своим примером json?

bhaumik shah 26.10.2018 09:29

@Hades Я не нашел ничего, связанного с добавлением данных в лист Excel. Я пробовал использовать Apache POI, который экспортирует данные JSON в Excel. Я сослался: - aboullaite.me/spring-boot-excel-csv-and-pdf-view-example

user8569142 26.10.2018 14:18

@bhaumikshah [{"name": "Ford"}, {"name": "BMW"}, {"name": "Fiat"}]: - что-то вроде этого. Я хочу добавить массив JSON, чтобы превзойти

user8569142 26.10.2018 14:21

@coder Я обновил свой ответ решением, которое создаст новый файл xls, если он не существует, или добавит данные, если он уже существует.

Amit Kumar Lal 28.10.2018 11:25
0
5
1 804
1

Ответы 1

Я создал образец проекта, чтобы заставить его работать.В основном я создал 2 метода обслуживания для запросов ПОЧТА и ПОЛОЖИЛ, чтобы следовать стандартам REST, запрос Post всегда создает файл, то есть ресурс, а запрос PUT обновляет данные в файл т.е. добавить отправляемый текст JSON в тело запроса.

вот мой класс загрузчика

@SpringBootApplication
public class SpringBootWebApplication extends SpringBootServletInitializer {

        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(SpringBootWebApplication.class);
        }

        public static void main(String[] args) throws Exception {
            SpringApplication.run(SpringBootWebApplication.class, args);
        }
    }

Вот мой класс конфигурации, который в основном добавляет MappingJackson2HttpMessageConverter в качестве конвертера сообщений для анализа данных json взад и вперед.

@Configuration
@EnableWebMvc
public class AppConfig extends WebMvcConfigurerAdapter{

    @Bean
    public MappingJackson2HttpMessageConverter customJackson2HttpMessageConverter() {
        MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        jsonConverter.setObjectMapper(objectMapper);
        return jsonConverter;
    }
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(customJackson2HttpMessageConverter());
    }
}

И, наконец, класс контроллера, который сопоставляет запрос с методами создателя xls.

@Controller
public class WelcomeController {

    @RequestMapping(value="/writeData", method=RequestMethod.POST, consumes=MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<String> writeJSONDataToFile(@RequestBody(required=true) Map<String, String> input){
        try {  
            String fileName = "C:\\Test\\Sample.xls";
            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.createSheet();
            int rownum =0;
            for (Entry<String, String> entry : input.entrySet()) {
                HSSFRow row = sheet.createRow(rownum++);
                short cellNum = 0;
                HSSFCell cell1 = row.createCell(cellNum++);
                cell1.setCellValue(entry.getKey());
                HSSFCell cell2 = row.createCell(cellNum++);
                cell2.setCellValue(entry.getValue());
            }
            FileOutputStream fileOutputStream = new FileOutputStream(new File(fileName));
            workbook.write(fileOutputStream); 
            fileOutputStream.close();
            System.out.println("Sample.xls created successfully on disk."); 
        }catch (Exception e) { 
            e.printStackTrace(); 
        }
        return new ResponseEntity<String>("Create", HttpStatus.CREATED);
    }


    @RequestMapping(value="/writeData", method=RequestMethod.PUT, consumes=MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<String> updateJSONDataToFile(@RequestBody(required=true) Map<String, String> input){
        try {  
            String fileName = "C:\\Test\\Sample.xls";
            HSSFWorkbook workbook = null;
            FileInputStream fileInputStream = null;
            HSSFSheet sheet = null;
            File file = new File(fileName);
            if(file.exists()){
                fileInputStream = new FileInputStream(file); 
                workbook = new HSSFWorkbook(fileInputStream); //Reading from file
                sheet = workbook.getSheetAt(0);
            }else{
                return new ResponseEntity<String>("File doesnt Exists", HttpStatus.BAD_REQUEST);
            }
            int rownum =sheet.getLastRowNum();
            for (Entry<String, String> entry : input.entrySet()) {
                HSSFRow row = sheet.createRow(++rownum);
                short cellNum = row.getLastCellNum();
                HSSFCell cell1 = row.createCell(++cellNum);
                cell1.setCellValue(entry.getKey());
                HSSFCell cell2 = row.createCell(++cellNum);
                cell2.setCellValue(entry.getValue());
            }
            if(fileInputStream!=null)
                fileInputStream.close();

            FileOutputStream fileOutputStream = new FileOutputStream(file);
            workbook.write(fileOutputStream); 
            fileOutputStream.close();
            System.out.println("Sample.xls written/Updated successfully on disk."); 
        }catch (Exception e) { 
            e.printStackTrace(); 
        }
        return new ResponseEntity<String>("updated successfully", HttpStatus.OK);
    }
}

Я использовал Apache poi-3.15-final.jar

Другие вопросы по теме