當前,我的項目使用Controller類並利用AbstractJExcelView類生成Excel報告,該報告向用戶提供打開或保存Excel文件的提示。 Basicall它使用http協議來調用控制器。 現在我需要做的是在(Spring)批處理作業中生成相同的excel文件,並通過電子郵件直接作爲附件發送。我們使用org.springframework.mail.MailSender發送郵件。 我不應該使用任何其他外部API,我不知道從哪裏開始。使用AbstractJExcelView在Spring Framework中生成excel文件並通過MailSender發送
這是我們正在做的事情類似的代碼: -
控制器
public class RevenueReportController extends AbstractController{
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
String output =
ServletRequestUtils.getStringParameter(request, "output");
//dummy data
Map<String,String> revenueData = new HashMap<String,String>();
revenueData.put("Jan-2010", "$100,000,000");
revenueData.put("Feb-2010", "$110,000,000");
revenueData.put("Mar-2010", "$130,000,000");
revenueData.put("Apr-2010", "$140,000,000");
revenueData.put("May-2010", "$200,000,000");
if(output ==null || "".equals(output)){
//return normal view
return new ModelAndView("RevenueSummary","revenueData",revenueData);
}else if("EXCEL".equals(output.toUpperCase())){
//return excel view
return new ModelAndView("ExcelRevenueSummary","revenueData",revenueData);
}else{
//return normal view
return new ModelAndView("RevenueSummary","revenueData",revenueData);
}
}
查看
public class ExcelRevenueReportView extends AbstractJExcelView{
@Override
protected void buildExcelDocument(Map model, WritableWorkbook workbook,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
Map<String,String> revenueData = (Map<String,String>) model.get("revenueData");
WritableSheet sheet = workbook.createSheet("Revenue Report", 0);
sheet.addCell(new Label(0, 0, "Month"));
sheet.addCell(new Label(1, 0, "Revenue"));
int rowNum = 1;
for (Map.Entry<String, String> entry : revenueData.entrySet()) {
//create the row data
sheet.addCell(new Label(0, rowNum, entry.getKey()));
sheet.addCell(new Label(1, rowNum, entry.getValue()));
rowNum++;
}
}
}
有什麼辦法d那?我需要生成具有通過和失敗的作業數據的Excel表。我可以處理填充和創建文件,但我不知道如何在緩衝區中生成excel,或者可能在某個臨時目錄中發送郵件時可能再次連接。用戶不需要回應任何提示。我們也不會使用任何http請求。
在此先感謝!