I have a project which has one model class, Person with three Columns: id, name, and country, which correctly persists to PostgreSQL. The results are correctly found in List
objects. But I want to export the List
data (which displays on the page) to Excel.
I made a class named 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());
}
}}
Here is my PersonServiceImpl
class:
@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();
}
}
Here is my Controller code:
@RequestMapping(value = "/export", method = RequestMethod.POST)
public ModelAndView getExcel() {
List personList = (List) personService.getPersonList();
return new ModelAndView("PersonExcelView", "personList", personList);
}
and here is the JSP:
<a href="SpringMVCHibernate/export">Export</a></h3>
When I click export, it does not export the data into Excel. Where is the error?
Use below code for exporting data to excel sheet and do changes as per your code requirement.
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();
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.