前言:
在实际项目之中,特别是遇到报表管理模块,客户会要求,导出excel文件是动态的,其格式应该依据用户勾选条件而变化,比如有四个勾选项,勾选第一个选项显示一张图片,勾选第二个选项显示一张整体统计图,勾选第三个显示n张局部详细图,勾选第四个显示列表。
那么问题来了:
1.前端如何传递勾选情况?
2.后台如何对勾选情况进行处理?
问题1: 前端传递一个字符串到后台,以逗号分隔。以ssm框架为例:
String type1 = request.getParameter("chartType");//获取传递字符串
问题2:
①解析为字符数组
String stype[] = null;
stype = type1.split(",");
System.out.println("前端勾选情况:");
for(int i = 0;i < stype.length;i++){
System.out.println("第"+(i+1)+"个:"+stype[i]);
}
②关键点:对传递的参数进行解析,因为传递参数是有序的,比如 123,不可能是432。所以先将数据产生的相应的图片的地址,按照勾选情况存入图片地址字符串数组。
if(stype.length == 1){
//长度为1,取出勾选值,依据勾选值创建相应图表,插入到一个Excel表格里面
selectFK[0] = Integer.parseInt(stype[0]);
if(selectFK[0] == 1)
imagePathFK[0] = dir+"/rose.png";
if(selectFK[0] == 2)
imagePathFK[0] = dir+"/AllWindDistriBution.png";
if(selectFK[0] == 3)
{
for(int i = 0; i < pname.length; i++)
{
imagePathFK[i] = dir+"/" + pname[i];
}
}
}
③传递参数勾选字符串数组,图片地址保存数组到创建excel方法
wb = WindDistriButionExcel.exportReport(selectFK,imagePathFK,stype,2);
④创建循环,如果勾选参数数组里面有相应的选项,则对excel插入相应内容
for(int j = 0; j < stype.length ; j++){
//如果勾选了风玫瑰图取imagePath[0]
if(Integer.parseInt(stype[j]) == 1){
略
}
}
⑤完成格式编辑,测试做细微调整