[英]How do I Export Data to Excel using Spring, Hibernate, and PostgreSQL?
我有一個項目有一個模型類,Person有三個列:id,name和country,它們正確地持久化到PostgreSQL。 結果在List
對象中正確找到。 但我想將List
數據(顯示在頁面上)導出到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());
}
}}
這是我的PersonServiceImpl
類:
@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:
<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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.