java mvc excel导出_springMVC实现excel导出(简单封装版)

public class Student {

private long id;

private String name;

private int age;

private boolean sex;

private Date birthday;

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public boolean getSex() {

return sex;

}

public void setSex(boolean sex) {

this.sex = sex;

}

public Date getBirthday() {

return birthday;

}

public void setBirthday(Date birthday) {

this.birthday = birthday;

}

}

编写默认的ExcelView

public class DefaultExcelView extends AbstractExcelView {

@Override

protected void buildExcelDocument(Map model, HSSFWorkbook workbook, HttpServletRequest request, HttpServletResponse response) throws Exception {

List dataSet = (List) model.get("dataSet");

String[] keys = (String[])model.get("keys");

String[] titles = (String[])model.get("titles");

String fileName = (String)model.get("fileName");

HSSFSheet sheet = workbook.createSheet();

sheet.setDefaultColumnWidth(12);

for (int i = 0; i 

HSSFCell cell = getCell(sheet,0,i);

setText(cell, titles[i]);

}

for (int i = 0; i 

HSSFRow row = sheet.createRow(i+1);

Object obj = dataSet.get(i);

// 处理列

for(int j=0; j 

row.createCell(j).setCellValue(getFieldValueByName(keys[j], obj));

}

}

fileName = new String(fileName.getBytes("UTF-8"),"ISO-8859-1") + ".xls";

response.setContentType("application/vnd.ms-excel");

response.setHeader("Content-disposition", "attachment;filename=" + fileName);

OutputStream outputStream = response.getOutputStream();

workbook.write(outputStream);

outputStream.flush();

outputStream.close();

}

/**

* 属性中的方法都是getXXX和setXXX,不存在isXXX

* @param fieldName

* @param obj

*/

protected String getFieldValueByName(String fieldName, Object obj) {

String firstLetter = fieldName.substring(0,1).toUpperCase();

String getter = "get" + firstLetter + fieldName.substring(1);

try {

Method method = obj.getClass().getMethod(getter, new Class[]{});

Object value = method.invoke(obj, new Object[]{});

return value.toString();

} catch (Exception e) {

e.printStackTrace();

System.out.println("属性不存在!");

}

return "";

}

}

在controller层如何使用

@RequestMapping(value = "/controller/student")

public class StudentController {

@RequestMapping(value = "/export")

public ModelAndView export(ModelMap model) throws ParseException {

List dataSet = new ArrayList();

for (int i = 0; i 

Student student = new Student();

student.setId(i);

student.setName("lgq"+i);

student.setAge(20);

student.setSex(false);

student.setBirthday(new Date());

dataSet.add(student);

}

String[] keys = new String[]{"id", "name", "age", "sex","birthday"};

String[] titles = new String[]{"编号", "姓名", "年龄", "性别", "生日"};

String fileName = "学生信息";

DefaultExcelView defaultExcelView = new DefaultExcelView();

model.put("dataSet", dataSet);

model.put("keys", keys);

model.put("titles", titles);

model.put("fileName", fileName);

return new ModelAndView(defaultExcelView, model);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值