这里我还只是能导出数据库中全部的数据,没有能够按条件查询数据然后导出,如果有需要可以参考导出EX
前端:
按钮:
<div class="pull-left" id="toolbar-btn2" style="padding-bottom:10px;">
<span class="btn btn-primary" style="margin:0 2px;float: left; width: 70px"
data-bind="click:queryGrid" type="submit"><@spring.message "hap.query"/></span>
<span class="btn btn-default" style="margin:0 2px;float: left; width: 70px" data-bind="click:resetForm" type="button"><@spring.message "hap.reset"/></span>
<span class="btn btn-success" style="float:left;margin-right:5px;"
onclick="exportExcelFunction()" ><i class="fa fa-file-excel-o" style="margin-right:3px;"></i><@spring.message "导出Excel"/></span>
</div>
<script>kendo.bind($('#toolbar-btn2'), viewModel);</script>
js:
我用多条件没有能够成功,这里可以不用传参数,使用的时候可以去掉
function exportExcelFunction() {
//1)执行exportMethod方法传递参数param
var companyId=viewModel.model.get("companyId");
var customerId=viewModel.model.get("customerId");
var orderNumber=viewModel.model.get("orderNumber");
var inventoryItemId=viewModel.model.get("inventoryItemId");
var orderStatus =viewModel.model.get("orderStatus");
// var inputParam = [
// {name:"companyId",value:companyId},
// {name:"customerId",value:"customerId"},
// {name:"orderNumber",value:"orderNumber"},
// {name:"inventoryItemId",value:"inventoryItemId"},
// {name:"orderStatus",value:"orderStatus"}
// ];
var url = '${base.contextPath}/hap/om/order/headers/exportExcel?${_csrf.parameterName}=${_csrf.token}&companyId='+companyId+'&customerId='+customerId+'&orderNumber='+orderNumber+'&inventoryItemId'+inventoryItemId+'&orderStatus'+orderStatus;
// $.ajax({
// type:'POST',
// data:JSON.stringify(inputParam),
// contentType :'application/json',
// dataType:'json',
// url :url,
// success :function(data) {
window.location.href = url;
// },
// error :function(e) {
// alert("error");
// }})
}
controller 层
/**
* 导出Ex
*
* @param request
* @param response
*/
@RequestMapping(value = "/hap/om/order/headers/exportExcel")
@ResponseBody
public void exportExcel(HttpServletRequest request, HttpServletResponse response) {
IRequest requestContext = createRequestContext(request);
// System.out.println(headers);
//生成excel文件
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
HSSFSheet sheet = hssfWorkbook.createSheet("头行数据");
//设置表头
HSSFRow headRow = sheet.createRow(0);//表头在第0行
headRow.createCell(0).setCellValue("销售订单号");//第一列
headRow.createCell(1).setCellValue("公司名称");//第二列
headRow.createCell(2).setCellValue("客户名称");//第三列
headRow.createCell(3).setCellValue("订单日期");//第四列
headRow.createCell(4).setCellValue("订单状态");
headRow.createCell(5).setCellValue("物料编码");
headRow.createCell(6).setCellValue("物料描述");
headRow.createCell(7).setCellValue("数量");
headRow.createCell(8).setCellValue("销售单价");
headRow.createCell(9).setCellValue("金额");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
// //查询所有数据selectHeader
List<OmOrderHeaders> headers = service.selectAllHeader(); // 头数据
// String companyId2 = request.getParameter("companyId");
// Long companyId = Long.valueOf(request.getParameter("companyId"));
// String customerId2 = request.getParameter("customerId");
// Long customerId = Long.valueOf(request.getParameter("customerId"));
// String orderNumber = request.getParameter("orderNumber");
// String inventoryItemId2 = request.getParameter("inventoryItemId");
// Long inventoryItemId = Long.valueOf(inventoryItemId2);
// String orderStatus = request.getParameter("orderStatus");
// System.out.println("companyId2出现了+=VVVVVVVVVVVV" + companyId2);
//存入表格数据
for (OmOrderHeaders header : headers) {
// if (companyId == header.getCompanyId()) {
// 行部分
List<OmOrderLines> lines = omOrderLinesService.selectLineByHeaderId(header.getHeaderId());
for (OmOrderLines line : lines) {
HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1);
// 头部分
// 销售订单号
dataRow.createCell(0).setCellValue(header.getOrderNumber());
// 公司名称
dataRow.createCell(1).setCellValue(header.getCompanyName());
// 客户名称
dataRow.createCell(2).setCellValue(header.getCustomerName());
// 订单日期
dataRow.createCell(3).setCellValue(simpleDateFormat.format(header.getOrderDate()).toString());
// 订单状态
dataRow.createCell(4).setCellValue(header.getOrderStatus());
// 物料编码
dataRow.createCell(5).setCellValue(line.getInventoryItemId());
// 物料描述
dataRow.createCell(6).setCellValue(line.getItemDescription());
// 数量
dataRow.createCell(7).setCellValue(line.getOrderdQuantity());
// 销售单价
dataRow.createCell(8).setCellValue(line.getUnitSellingPrice());
// 金额
dataRow.createCell(9).setCellValue(line.getUnitSellingPrice() * line.getOrderdQuantity());
}
// }
}
//下载导出,设置头信息
String filename = "订单头数据.xls";
String mimeType = request.getServletContext().getMimeType(filename);
response.setContentType(mimeType);
//获取客服端浏览器类型
try {
filename = ExcelUtils.encodeChineseDownloadFileName(request, filename);
response.setHeader("content-disposition", "attachment;filename=" + filename);
ServletOutputStream outputStream = response.getOutputStream();
hssfWorkbook.write(outputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
工具类
package hbi.core.sales.Util;
import com.itextpdf.text.Font;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfPCell;
import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
public class ExcelUtils {
private static int width = 256*14;
//默认字体
private static String excelfont = "微软雅黑";
private final static String excel2003L =".xls"; //2003- 版本的excel
private final static String excel2007U =".xlsx"; //2007+ 版本的excel
/**
* 对文件流输出下载的中文文件名进行编码 屏蔽各种浏览器版本的差异性
* @throws UnsupportedEncodingException
*/
public static String encodeChineseDownloadFileName(
HttpServletRequest request, String pFileName) throws Exception {
String filename = null;
String agent = request.getHeader("USER-AGENT");
if (null != agent){
if (-1 != agent.indexOf("Firefox")) {//Firefox
filename = "=?UTF-8?B?" + (new String(org.apache.commons.codec.binary.Base64.encodeBase64(pFileName.getBytes("UTF-8"))))+ "?=";
}else if (-1 != agent.indexOf("Chrome")) {//Chrome
filename = new String(pFileName.getBytes(), "ISO8859-1");
} else {//IE7+
filename = java.net.URLEncoder.encode(pFileName, "UTF-8");
filename = filename.replace("+", "%20");
}
} else {
filename = pFileName;
}
return filename;
}
public static PdfPCell buildCell(String content, Font font) throws Exception {
Phrase phrase = new Phrase(content, font);
PdfPCell cell = new PdfPCell();
cell.setPhrase(phrase);
return cell;
}
}