Добрый день. Есть контроллер в котором есть метод поиска.
@RequestMapping(value = "/search", method = RequestMethod.POST)
public String search(@RequestParam Integer idProvider, @RequestParam String department,
@RequestParam String carNumber,
@RequestParam("arrivalDate") @DateTimeFormat(iso = ISO.DATE) LocalDate startDate,
@RequestParam("arrivalDate") @DateTimeFormat(iso = ISO.DATE) LocalDate endDate,
@ModelAttribute("idAttribute") Supply supply, Model model) throws DaoException {
List<Supply> supplyList = supplyDao.searchByCriteria(idProvider, department, carNumber, startDate, endDate);
model.addAttribute("supplyList", supplyList);
return "searchList";
Данный метод выводит результаты поиска на JSP страницу. Как правильно организовать экспорт этих данных в Excel?
Я создал класс для создание документа:
public class ExcelBuilder extends AbstractXlsxView {
private static final DateFormat DATE_FORMAT = DateFormat.getDateInstance(DateFormat.SHORT);
@Override
protected void buildExcelDocument(Map model, Workbook workbook, HttpServletRequest request,
HttpServletResponse response) throws Exception {
// change the file name
response.setHeader("Content-Disposition", "attachment; filename=\"report.xls\"");
@SuppressWarnings("unchecked")
LinkedList<Supply> supplyes = (LinkedList<Supply>) model.get("supplyList");
// create excel xls sheet
Sheet sheet = workbook.createSheet("Отчет");
// create header row
Row header = sheet.createRow(0);
header.createCell(0).setCellValue("Дата поставки");
header.createCell(1).setCellValue("Номер автомобиля");
header.createCell(2).setCellValue("Фамилия водителя");
header.createCell(3).setCellValue("Телефон");
header.createCell(4).setCellValue("Отдел");
header.createCell(5).setCellValue("Товар");
header.createCell(6).setCellValue("Документ поставщика");
header.createCell(7).setCellValue("Документ получателя");
header.createCell(8).setCellValue("Кладовщик");
header.createCell(9).setCellValue("Диспетчер");
// Create data cells
int rowCount = 1;
for (Supply supply : supplyes) {
Row supplyRow = sheet.createRow(rowCount++);
supplyRow.createCell(0).setCellValue(DATE_FORMAT.format(supply.getArrivalDate()));
supplyRow.createCell(1).setCellValue(supply.getCarNumber());
supplyRow.createCell(2).setCellValue(supply.getDriverName());
supplyRow.createCell(3).setCellValue(supply.getPhone());
supplyRow.createCell(4).setCellValue(supply.getDepartment());
supplyRow.createCell(5).setCellValue(supply.getProduct());
supplyRow.createCell(6).setCellValue(supply.getVendorDocument());
supplyRow.createCell(7).setCellValue(supply.getDocumentReceiving());
supplyRow.createCell(8).setCellValue(supply.getStorekeeper());
supplyRow.createCell(9).setCellValue(supply.getDispatcher());
}
}
}
Далее создал метод в контроллере:
@RequestMapping(value = "/downloadExcel", method = RequestMethod.GET)
public ModelAndView downloadExcel(@ModelAttribute("supplyList") Supply supply) {
//return new ModelAndView("excelView2");
}
Насколько я понял для экспорта в Excel можно использовать только ModelAndView.
Вопрос: как передать данные из supplyList в новую модель для сохранения в Excel?
Посоветуйте как лучше сделать? Заранее благодарен.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не могу найти ни один пример запроса Twitter Api androidЕсли кто может - предоставьте пример выполнения такого запроса в android
Как отловить события mousePressed и mouseReleased где в этот момент находится курсор, а потом получить объект над которым это событие происходит? Можно...
Получаю "Screen overlay detected, To change this permission setting", you first have to turn off the screen overlay from Settings > Apps" (на Samsung S7 Edge), после нажатия Allow в окне с permissions, на Samsung S6 такой...
Есть приложение в нём через google api client получаю данные о моём местоположении, если точнее — широту и долготуМожно ли это делать в потоке или...