如何在restController中下载Excel文件

时间:2019-04-22 18:54:45

标签: java rest spring-boot

大家好,

我需要制作一个rest应用程序,该应用程序允许从我的数据库中下载带有一些信息的excel文件,我在网上找到了一个示例,但是该示例使用了带有模型的Controller。在我的情况下,我需要使用@restController创建一个rest api,我想知道如何更改此示例,以便它可以与rest方法一起使用

这是控制器

@Controller
public class ExportController {
    @Autowired
    UserService userService;

    /**
     * Handle request to download an Excel document
     */
    @RequestMapping(value = "/download", method = RequestMethod.GET)
    public String download(Model model) {
        model.addAttribute("users", userService.findAllUsers());
        return "";
    }
}

这是excel视图:

public class ExcelView extends AbstractXlsView {

    @Override
    protected void buildExcelDocument(Map<String, Object> model,
                                      Workbook workbook,
                                      HttpServletRequest request,
                                      HttpServletResponse response) {

        // change the file name
        response.setHeader("Content-Disposition", "attachment; filename=\"my-xls-file.xls\"");

        @SuppressWarnings("unchecked")
        List<User> users = (List<User>) model.get("users");

        // create excel xls sheet
        Sheet sheet = workbook.createSheet("User Detail");
        sheet.setDefaultColumnWidth(30);




        // create header row
        Row header = sheet.createRow(0);
        header.createCell(0).setCellValue("Firstname");

        header.createCell(1).setCellValue("LastName");

        header.createCell(2).setCellValue("Age");

        header.createCell(3).setCellValue("Job Title");

        header.createCell(4).setCellValue("Company");

        header.createCell(5).setCellValue("Address");

        header.createCell(6).setCellValue("City");

        header.createCell(7).setCellValue("Country");

        header.createCell(8).setCellValue("Phone Number");



        int rowCount = 1;

        for (User user : users) {
            Row userRow = sheet.createRow(rowCount++);
            userRow.createCell(0).setCellValue(user.getFirstName());
            userRow.createCell(1).setCellValue(user.getLastName());
            userRow.createCell(2).setCellValue(user.getAge());
            userRow.createCell(3).setCellValue(user.getJobTitle());
            userRow.createCell(4).setCellValue(user.getCompany());
            userRow.createCell(5).setCellValue(user.getAddress());
            userRow.createCell(6).setCellValue(user.getCity());
            userRow.createCell(7).setCellValue(user.getCountry());
            userRow.createCell(8).setCellValue(user.getPhoneNumber());

        }

    }

}

0 个答案:

没有答案