Java 如何使用Spring、Hibernate和PostgreSQL将数据导出到Excel?

Java 如何使用Spring、Hibernate和PostgreSQL将数据导出到Excel?,java,spring,hibernate,spring-mvc,spring-boot,Java,Spring,Hibernate,Spring Mvc,Spring Boot,我有一个项目,它有一个模型类,Person有三列:id、name和country,可以正确地持久化到PostgreSQL。结果可以在列表对象中正确找到。但是我想将列表数据(显示在页面上)导出到Excel 我创建了一个名为PersonExcelView的类: public class PersonExcelView extends AbstractExcelView { private PersonService personService; @Override prote

我有一个项目,它有一个模型类,Person有三列:id、name和country,可以正确地持久化到PostgreSQL。结果可以在
列表
对象中正确找到。但是我想将
列表
数据(显示在页面上)导出到Excel

我创建了一个名为
PersonExcelView
的类:

public class PersonExcelView extends AbstractExcelView {
    private PersonService personService;
    @Override
    protected void buildExcelDocument(Map<String, Object> arg0, HSSFWorkbook arg1, HttpServletRequest arg2,
            HttpServletResponse arg3) throws Exception {
            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet excelSheet = workbook.createSheet("PersonList");
            setExcelHeader(excelSheet);

        List personList = (List) personService.getPersonList();
        setExcelRows(excelSheet,personList);

    }

    public void setExcelHeader(HSSFSheet excelSheet) {
        HSSFRow excelHeader = excelSheet.createRow(0);
        excelHeader.createCell(0).setCellValue("Id");
        excelHeader.createCell(1).setCellValue("Name");
        excelHeader.createCell(2).setCellValue("Country");
    }

    public void setExcelRows(HSSFSheet excelSheet, List personList){
        int record = 1;
        for (Person person : personService.listPersons()) {
            HSSFRow excelRow = excelSheet.createRow(record++);
            excelRow.createCell(0).setCellValue(person.getId());
            excelRow.createCell(1).setCellValue(person.getName());
            excelRow.createCell(2).setCellValue(person.getCountry());

    }

}}
这是我的控制器代码:

 @RequestMapping(value = "/export", method = RequestMethod.POST)
    public ModelAndView getExcel() {
        List personList = (List) personService.getPersonList();
        return new ModelAndView("PersonExcelView", "personList", personList);
    }
下面是JSP:

<a href="SpringMVCHibernate/export">Export</a></h3>


单击“导出”时,它不会将数据导出到Excel中。错误在哪里?

使用下面的代码将数据导出到excel工作表,并根据您的代码要求进行更改

 XSSFWorkbook workbook = new XSSFWorkbook();           
              XSSFSheet spreadsheet = workbook.createSheet("PersonList");         
              XSSFRow row;      
                     for (Object obj : objectArr)// for (Person person : personService.listPersons()) 
                     {
                        Cell cell = row.createCell(cellid++);
                        cell.setCellValue((String)obj);
                     }               
                for(int columnIndex = 0; columnIndex < 24; columnIndex++) {
                      spreadsheet.autoSizeColumn(columnIndex);
                    }

                      if(List.size()!=0)
                      {
                          FileOutputStream out;                      
                          out = new FileOutputStream(new File(file_path));                     
                          workbook.write(out);
                          out.close();
                      }
xssf工作簿=新的xssf工作簿();
XSSFSheet电子表格=工作簿.createSheet(“PersonList”);
XSSFRow行;
for(Object obj:objectArr)//for(Person-Person:personService.listPersons())
{
Cell Cell=row.createCell(cellid++);
cell.setCellValue((字符串)obj);
}               
对于(int columnIndex=0;columnIndex<24;columnIndex++){
电子表格。autoSizeColumn(columnIndex);
}
如果(List.size()!=0)
{
文件输出流输出;
out=新文件输出流(新文件(文件路径));
练习册。写(出);
out.close();
}

使用下面的代码将数据导出到excel工作表,并根据您的代码要求进行更改

 XSSFWorkbook workbook = new XSSFWorkbook();           
              XSSFSheet spreadsheet = workbook.createSheet("PersonList");         
              XSSFRow row;      
                     for (Object obj : objectArr)// for (Person person : personService.listPersons()) 
                     {
                        Cell cell = row.createCell(cellid++);
                        cell.setCellValue((String)obj);
                     }               
                for(int columnIndex = 0; columnIndex < 24; columnIndex++) {
                      spreadsheet.autoSizeColumn(columnIndex);
                    }

                      if(List.size()!=0)
                      {
                          FileOutputStream out;                      
                          out = new FileOutputStream(new File(file_path));                     
                          workbook.write(out);
                          out.close();
                      }
xssf工作簿=新的xssf工作簿();
XSSFSheet电子表格=工作簿.createSheet(“PersonList”);
XSSFRow行;
for(Object obj:objectArr)//for(Person-Person:personService.listPersons())
{
Cell Cell=row.createCell(cellid++);
cell.setCellValue((字符串)obj);
}               
对于(int columnIndex=0;columnIndex<24;columnIndex++){
电子表格。autoSizeColumn(columnIndex);
}
如果(List.size()!=0)
{
文件输出流输出;
out=新文件输出流(新文件(文件路径));
练习册。写(出);
out.close();
}

您必须提供更多关于“它不导出”的上下文。调用该端点时会显示什么?您是否知道您的方法是HTTPPOST而不是GET。对于
,您必须提供更多关于“它不导出”的上下文。调用该端点时会显示什么?您是否知道您的方法是HTTPPOST而不是GET。使用您的