##Excel下载工具类
添加依赖
<!-- jxl -->
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
代码
/**
* 用于servlet的导出
* @param objData 导出内容数组
* @param columns 导出Excel的表头数组
* @return
*/
public static int exportToExcelForNoStyleByPage(HttpServletResponse response,List<Map<String, List<Object>>> objData, List<String> columns) {
int flag = 0;
//声明工作簿jxl.write.WritableWorkbook
WritableWorkbook wwb;
try {
//根据传进来的file对象创建可写入的Excel工作薄
OutputStream os = response.getOutputStream();
wwb = Workbook.createWorkbook(os);
int k = 0;
WritableSheet ws = wwb.createSheet("Sheet" + (k+1), k);
//判断一下表头数组是否有数据
if (columns != null && columns.size() > 0) {
//循环写入第一个表的表头
for (int i = 0; i < columns.size(); i++) {
ws.addCell(new Label(i, 0, columns.get(i)));
}
//判断表中是否有数据
if (objData != null && objData.size() > 0) {
//循环写入表中数据
for (int i = 0; i < objData.size(); i++) {
if (i != 0 && i % 65535 == 0){
k++;
ws = wwb.createSheet("Sheet" + (k+1), k);
//循环写入表头
for (int j = 0; j < columns.size(); j++) {
ws.addCell(new Label(j, 0, columns.get(j)));
}
}
ws.setRowView(i+1-65535*k , 300);//设置行的高度,i表示哪一行
//转换成map集合{activyName:测试功能,count:2}
Map<String, List<Object>> map = (Map<String, List<Object>>)objData.get(i);
//循环输出map中的子集:既列值
for(Object o:map.keySet()){
//ps:因为要“”通用”“导出功能,所以这里循环的时候不是get("Name"),而是通过map.get(o)
//ws.addCell(new Label(j,i+1,String.valueOf(map.get(o))));
//j++;
List<Object> list = map.get(o);
for (int j=0;j<list.size();j++){
//判断Object的类型,最好 页面全部转换成string
if (list.get(j) instanceof Integer) {
ws.addCell(new Number(j,i+1-65535*k, Integer.parseInt(list.get(j).toString())));
}else if (list.get(j) instanceof String){
ws.addCell(new Label(j,i+1-65535*k, String.valueOf(list.get(j))));
}else if (list.get(j) instanceof Double){
ws.addCell(new Number(j,i+1-65535*k, Double.parseDouble(list.get(j).toString())));
}else if (list.get(j) instanceof Float){
ws.addCell(new Number(j,i+1-65535*k, Float.parseFloat(list.get(j).toString())));
}else if (list.get(j) instanceof BigDecimal){
ws.addCell(new Number(j,i+1-65535*k, Double.parseDouble(list.get(j).toString())));
}
}
}
}
}else{
flag = -1;
}
//写入Exel工作表
wwb.write();
//关闭Excel工作薄对象
wwb.close();
//关闭流
os.flush();
os.close();
os =null;
}
}catch (IllegalStateException e) {
System.err.println(e.getMessage());
}
catch (Exception ex) {
flag = 0;
ex.printStackTrace();
}
return flag;
}