大家好,
我需要制作一个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());
}
}
}