spring mvc jxl导出

jsp部分

//导出表单  带当前分页信息

<form id="queryform" name="queryform" method="post">
<input type="hidden" id="queryfileName" name="queryfileName" /> <input
type="hidden" id="export_query_page" name="export_query_page" /> <input
type="hidden" id="export_query_row" name="export_query_row" />
</form>

//导出按钮

<li><a class="add" id="excelExportQuery"
href="javascript:onclick=accountdownloadQueryExcel('对账单')"
onclick="return confirm('确实要导出这些记录吗?');" rel="excelExportQuery"><span>EXCEL导出</span></a></li>

//jquery部分

function accountdownloadQueryExcel(queryfileName) {
document.getElementById("queryfileName").value = queryfileName;
var page = ${pageInfo.pageNum};
var rows = $("#nowPageSize", navTab.getCurrentPanel()).val();
var Searchinstid = $("#Searchinstid", navTab.getCurrentPanel()).val();
var shopid = $("#shopid", navTab.getCurrentPanel()).val();
var status = $("#status", navTab.getCurrentPanel()).val();
var stdate = $("#stdate", navTab.getCurrentPanel()).val();
var jsdate = $("#jsdate", navTab.getCurrentPanel()).val();

if (stdate == "") {
stdate = "all";
}
if (jsdate == "") {
jsdate = "all";
}

document.getElementById("export_query_page").value = page;
document.getElementById("export_query_row").value = rows;
var sFormQuery = document.getElementById("queryform");

sFormQuery.action = "${ctx}/account/accountExcelExport/" + Searchinstid
+ "/" + shopid + "/" + status + "/" + stdate + "/" + jsdate;
sFormQuery.submit();                //提交表单
}

----------------------------------------------------------------------------------------------------------------------------------------------------

controller部分

// 导出对账单
@RequestMapping(value = "/accountExcelExport/{Searchinstid}/{shopid}/{status}/{stdate}/{jsdate}", method = RequestMethod.POST)
public String accountExcelExport(HttpServletResponse response,
HttpServletRequest request,
@PathVariable("Searchinstid") Integer institutionid,
@PathVariable("shopid") Integer shopid,
@PathVariable("status") Integer status,
@PathVariable("stdate") String stdate,
@PathVariable("jsdate") String jsdate) {
// String fileName = request.getParameter("queryfileName");
int page = Integer.parseInt(request.getParameter("export_query_page"));
int rows = Integer.parseInt(request.getParameter("export_query_row"));
String fileName = "公司流水对账单";
PageHelper.startPage(page, rows);
if (stdate.equals("all")) {
stdate = "";
}
if (jsdate.equals("all")) {
jsdate = "";
}

PageHelper.startPage(page, rows);
List<Detail> list = accountService.SearchList(institutionid, shopid,
status, stdate, jsdate);
request.setAttribute("pageInfo", new PageInfo<Detail>(list));
String[] Title = { "时间", "店名", "总业绩", "疗程款", "欠款", "还款", "体验卡", "奖励",
"厂家分成款", "耗材费", "应付厂家费用", "备注" };
// 以下开始输出到EXCEL
try {
// 定义输出流,以便打开保存对话框
OutputStream os = response.getOutputStream();// 取得输出流
response.reset();// 清空输出流
response.setHeader("Content-disposition", "attachment; filename="
+ new String(fileName.getBytes("GB2312"), "ISO8859-1")
+ ".xls");
// 设定输出文件头
response.setContentType("application/msexcel");// 定义输出类型
// 创建工作簿
WritableWorkbook workbook = Workbook.createWorkbook(os);
// 创建工作表
WritableSheet sheet = workbook.createSheet("Sheet1", 0);
// 设置纵横打印(默认为纵打)、打印纸
jxl.SheetSettings sheetset = sheet.getSettings();
sheetset.setProtected(false);
// 设置单元格字体
WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);
WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 10,
WritableFont.BOLD);
// 用于标题居中
WritableCellFormat wcf_center = new WritableCellFormat(BoldFont);
wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
wcf_center.setAlignment(Alignment.CENTRE); // 文字水平对齐
wcf_center.setWrap(false); // 文字是否换行
// 用于正文居左
WritableCellFormat wcf_left = new WritableCellFormat(NormalFont);
wcf_left.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
wcf_left.setAlignment(Alignment.CENTRE); // 文字水平对齐
wcf_left.setWrap(false); // 文字是否换行
// EXCEL开头大标题
//sheet.mergeCells(0, 0, 4, 0);
//sheet.addCell(new Label(0, 0, "区域:", wcf_center));
// 以下是EXCEL第一行列标题
for (int i = 0; i <Title.length; i++) {
sheet.addCell(new Label(i, 0, Title[i], wcf_center));
}
// 以下是EXCEL正文数据
int i = 1;
for (Detail detail : list) {
/*BigDecimal total = detail.getTreatmentmoney()
.add(detail.getRepayment())
.add(detail.getExperiencemoney())
.subtract(detail.getReward());
detail.setSubtotal(total);*/
int j = 0;
SimpleDateFormat sdftime = new SimpleDateFormat("yyyy/MM/dd");
String createtime = null;
if (detail.getDate() != null) {
createtime = sdftime.format(detail.getDate());
}
sheet.addCell(new Label(j++, i, createtime, wcf_left));
sheet.addCell(new Label(j++, i, detail.getShopname(), wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(detail
.getAchievement()), wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(detail
.getTreatmentmoney()), wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(detail
.getBalancedue()), wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(detail
.getRepayment()), wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(detail
.getExperiencemoney()), wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(detail
.getReward()), wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(detail
.getSubtotal()), wcf_left));
if (detail.getContotal() != null) {
sheet.addCell(new Label(j++, i, String.valueOf(detail
.getContotal()), wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(detail
.getContotal().add(detail.getSubtotal())), wcf_left));
} else {
sheet.addCell(new Label(j++, i, "0", wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(detail
.getSubtotal()), wcf_left));
}

sheet.addCell(new Label(j++, i, detail.getText(), wcf_left));
i++;
}
//汇总
BigDecimal achievement=new BigDecimal("0");
BigDecimal treatmentmoney=new BigDecimal("0");
BigDecimal balancedue=new BigDecimal("0");
BigDecimal repayment=new BigDecimal("0");
BigDecimal experiencemoney=new BigDecimal("0");
BigDecimal reward=new BigDecimal("0");
BigDecimal subtotal=new BigDecimal("0");
BigDecimal contotal=new BigDecimal("0");
BigDecimal subtotalcontotal=new BigDecimal("0");
for(Detail detail:list){
achievement=achievement.add(detail.getTreatmentmoney()).add(detail.getRepayment()).add(detail.getExperiencemoney()).add(detail.getReward());
treatmentmoney=treatmentmoney.add(detail.getTreatmentmoney());
balancedue=balancedue.add(detail.getBalancedue());
repayment=repayment.add(detail.getRepayment());
experiencemoney=experiencemoney.add(detail.getExperiencemoney());
reward=reward.add(detail.getReward());
subtotal=subtotal.add(detail.getSubtotal());
contotal=contotal.add(detail.getContotal());
subtotalcontotal=subtotalcontotal.add(detail.getContotal()).add(detail.getSubtotal());
}
int j=0;
sheet.mergeCells(j, i, j+1, i);            //合并单元格
sheet.addCell(new Label(j++, i, "汇总", wcf_left));
j=2;
sheet.addCell(new Label(j++, i, String.valueOf(achievement), wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(treatmentmoney), wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(balancedue), wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(repayment), wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(experiencemoney), wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(reward), wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(subtotal), wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(contotal), wcf_left));
sheet.addCell(new Label(j++, i, String.valueOf(subtotalcontotal), wcf_left));
sheet.addCell(new Label(j++, i, "汇总", wcf_left));
// 将以上缓存中的内容写到EXCEL文件中
workbook.write();
// 关闭文件

workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

当能力支撑不了野心时,就该静下心来学习!
原文地址:https://www.cnblogs.com/1234cjq/p/5923084.html