2016-08-24 2 views
1

PostgreSQL에 올바르게 유지되는 ID, 이름 및 국가라는 세 개의 열이있는 Person 클래스가있는 프로젝트가 있습니다. 결과는 List 개체에서 올바르게 발견됩니다. 하지만 Excel에 List 데이터 (페이지에 표시)를 내보내려고합니다. 여기 Spring, Hibernate 및 PostgreSQL을 사용하여 Excel로 데이터를 내보내려면 어떻게합니까?

@Service 
public class PersonServiceImpl implements PersonService { 

    private PersonDAO personDAO; 

    public void setPersonDAO(PersonDAO personDAO) { 
     this.personDAO = personDAO; 
    } 

    @Override 
    @Transactional 
    public void addPerson(Person p) { 
     this.personDAO.addPerson(p); 
    } 

    @Override 
    @Transactional 
    public void updatePerson(Person p) { 
     this.personDAO.updatePerson(p); 
    } 

    @Override 
    @Transactional 
    public List<Person> listPersons() { 
     return this.personDAO.listPersons(); 
    } 

    @Override 
    @Transactional 
    public Person getPersonById(int id) { 
     return this.personDAO.getPersonById(id); 
    } 

    @Override 
    @Transactional 
    public void removePerson(int id) { 
     this.personDAO.removePerson(id); 
    } 

    @Override 
    public List<Person> getPersonList() { 
     // TODO Auto-generated method stub 
     return listPersons(); 
    } 

} 

내 컨트롤러 코드 :

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

여기에 JSP입니다

다음
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()); 

    } 

}} 

PersonServiceImpl 클래스 :

나는 클래스가 PersonExcelView 지명했다 ​​:

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

내보내기를 클릭하면 데이터가 Excel로 내보내지지 않습니다. 오류는 어디에 있습니까?

+0

"내보낼 수 없음"에 대한 추가 컨텍스트를 제공해야합니다. 그 끝점을 호출 할 때 나타나는 것은 무엇입니까? 당신의 방법이 HTTP POST이고 GET이 아니라는 것을 알고 있습니까? ' ", false) });