概述
js代码 使用input隐藏域提交json数据
ids = ids.substr(0,ids.length-1);
keys = keys.substr(0,keys.length-1);
columnNames = columnNames.substr(0,columnNames.length-1);
var sParms = {
ids: ids,
keys: keys,
columnNames: columnNames
};
var parametersStr = JSON.stringify(sParms).toString();
console.log(parametersStr);
var url = "/exch_platform/cashInfo/export";
//创建隐藏表单
exportForm = document.createElement("form");
exportForm.setAttribute('id',"_exportForm");
exportForm.setAttribute("action", url);
exportForm.setAttribute("method", "post");
//对应查询条件的开始时间
var input1 = document.createElement("input");
input1.type="text";
input1.name = "idsP";
input1.value = parametersStr;
exportForm.append(input1);
document.body.appendChild(exportForm);
exportForm.submit();
Java后端接收并处理参数
@RequestMapping(value = "/export",method = RequestMethod.POST)
public void export(HttpServletRequest request, HttpServletResponse response) {
String idsP = request.getParameter("idsP");
JSONObject jsonObject = JSONObject.parseObject(idsP);
String idStr = jsonObject.getString("ids");
String[] ids = new String[0];
if(StringUtils.isNoneEmpty(idStr)){
ids = idStr.split(",");
}
String keys = jsonObject.getString("keys");
String columnNames = jsonObject.getString("columnNames");
cashInfoService.selectByConditionToExport(request, response, ids);
}
service层处理数据
excel导出工具类
public static void downloadExcel(HttpServletResponse response, String fileName,
List> list, String[] keys, String[] columnNames) throws UnsupportedEncodingException, IOException {
ByteArrayOutputStream os = new ByteArrayOutputStream();
try {
ExcelUtil.createWorkBook(list,keys,columnNames).write(os);
} catch (IOException e) {
e.printStackTrace();
}
byte[] content = os.toByteArray();
InputStream is = new ByteArrayInputStream(content);
// 设置response参数,可以打开下载页面
response.reset();
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename="+ new String((fileName + ".xls").getBytes(), "iso-8859-1"));
ServletOutputStream out = response.getOutputStream();
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(is);
bos = new BufferedOutputStream(out);
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (final IOException e) {
throw e;
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
}
}
将数据写入excel
/**
* 创建excel文档,
* @param list 数据
* @param keys list中map的key数组集合
* @param columnNames excel的列名
* */
public static Workbook createWorkBook(List> list,String []keys,String columnNames[]) {
// 创建excel工作簿
Workbook wb = new HSSFWorkbook();
// 创建第一个sheet(页),并命名
//Sheet sheet = wb.createSheet(list.get(0).get("sheetName").toString());
Sheet sheet = wb.createSheet("sheet1");
// 手动设置列宽。第一个参数表示要为第几列设;,第二个参数表示列的宽度,n为列高的像素数。
for(int i=0;i
最后
以上就是震动鸵鸟为你收集整理的java怎么将页面导出excek_Java web 前端页面浏览器导出excel的全部内容,希望文章能够帮你解决java怎么将页面导出excek_Java web 前端页面浏览器导出excel所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复