导出Excel 也就是一个工具类的性质
直接上代码
Controller
package com.mj.zhibo.excel.controller; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.mj.util.ExcelUtil; import com.mj.util.IdUtils; import com.mj.zhibo.excel.service.ExcelService; import com.mj.zhibo.userinfo.pojo.Userinfo; import com.mj.zhibo.userinfo.service.UserInfoService; import javax.servlet.http.HttpServletResponse; /** * @author Mr.Wen * @description 导出excel * @date 2018/3/19 */ @Controller public class ExcelController { private final static Logger LOGGER = LoggerFactory.getLogger(ExcelController.class); @Autowired private ExcelService excelService; @Autowired private UserInfoService userInfoService; /** * 订单表导出excel * * @param response */ @RequestMapping(value = "exportfeedbackTwo") @ResponseBody public void exportFeedBack2( HttpServletResponse response, @RequestParam(value = "clientname", required = false) String tel, @RequestParam(value = "startTime", required = false) Long startTime, @RequestParam(value = "endTime", required = false) Long endTime) { String fileName = IdUtils.genImageName() + ".xls"; // 文件名 String sheetName = "客户用餐";// sheet名 String[] title = new String[] { "姓名", "用户头像", "密码", "电话号", "账户", "时间" };// 标题 Map<String, String> map = new HashMap<String, String>(); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); map.put("tel", tel); map.put("startTime", startTime != null ? sdf1.format(startTime) : null); map.put("endTime", endTime != null ? sdf1.format(endTime) : null); try { List<Userinfo> list = userInfoService .selectByDateAndTel(map);// 内容list SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String[][] values = new String[list.size()][]; for (int i = 0; i < list.size(); i++) { values[i] = new String[title.length]; // 将对象内容转换成string Userinfo obj = list.get(i); values[i][0] = String.valueOf(obj.getUsername()); values[i][1] = String.valueOf(obj.getHeadimage()); values[i][2] = String.valueOf(obj.getPwd()); values[i][3] = String.valueOf(obj.getPhone()); values[i][4] = String.valueOf(obj.getAccount()); values[i][5] = sdf1.format(obj.getCreated()); } HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, values, null); // 将文件存到指定位置 this.setResponseHeader(response, fileName); OutputStream os = response.getOutputStream(); wb.write(os); os.flush(); os.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @RequestMapping(value = "exportfeedbackPhone") @ResponseBody public void exportfeedbackPhone( HttpServletResponse response, @RequestParam(value = "clientname", required = false) String tel, @RequestParam(value = "startTime", required = false) Long startTime, @RequestParam(value = "endTime", required = false) Long endTime) { String fileName = IdUtils.genImageName() + ".xls"; // 文件名 String sheetName = "客户用餐";// sheet名 String[] title = new String[] {"电话号"};// 标题 Map<String, String> map = new HashMap<String, String>(); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); map.put("tel", tel); map.put("startTime", startTime != null ? sdf1.format(startTime) : null); map.put("endTime", endTime != null ? sdf1.format(endTime) : null); try { List<Userinfo> list = userInfoService .selectByDateAndTel(map);// 内容list SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String[][] values = new String[list.size()][]; for (int i = 0; i < list.size(); i++) { values[i] = new String[title.length]; // 将对象内容转换成string Userinfo obj = list.get(i); values[i][0] = String.valueOf(obj.getPhone()); } HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, values, null); // 将文件存到指定位置 this.setResponseHeader(response, fileName); OutputStream os = response.getOutputStream(); wb.write(os); os.flush(); os.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void setResponseHeader(HttpServletResponse response, String fileName) { try { try { fileName = new String(fileName.getBytes(), "ISO8859-1"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } response.setContentType("application/octet-stream;charset=ISO8859-1"); response.setHeader("Content-Disposition", "attachment;filename=" + fileName); response.addHeader("Pargam", "no-cache"); response.addHeader("Cache-Control", "no-cache"); } catch (Exception ex) { ex.printStackTrace(); } } }
@Autowired
private ExcelService excelService;
@Autowired
private UserInfoService userInfoService;
上面的代码中 ExcelService 下面会有说明 UserInfoService这个就是你要导出的表
接着上代码
ExcelService
public interface ExcelService {
/**
* 用户表导出excel
* @param response
*/
List<Userinfo> selectByDateAndName(Map<String, String> map)throws Exception;
}
ExcelServiceImpl
@Service
public class ExcelServiceImpl implements ExcelService {
@Autowired
private UserInfoService userInfoService;
private void setResponseHeader(HttpServletResponse response, String fileName) {{
try {
try {
fileName = new String(fileName.getBytes(), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
response.setContentType("application/octet-stream;charset=ISO8859-1");
response.setHeader("Content-Disposition", "attachment;filename="
+ fileName);
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
} catch (Exception ex) {
ex.printStackTrace();
}
}}
@Override
public List<Userinfo> selectByDateAndName(Map<String, String> map)
throws Exception {
// TODO Auto-generated method stub
return null;
}
}
到这的话,基本上就完了,你想导出哪张表, 就是在那个表里面写一个查询全部的接口
还有一个,就是关于你怎么测试这个接口

点Send And Download

这样就是成功的了 后缀是bin

我是用的WPS表格打开的 就是这样子
成功!!!
本文介绍了如何在Java Spring-Struts-MyBatis(SSM)框架下实现Excel导出功能。通过创建一个ExcelService工具类,并在Controller中注入并调用该服务,配合UserInfoService来获取需要导出的数据。只需在目标表中添加一个查询所有数据的接口,即可完成导出。测试时,可以通过接口下载文件,后缀为.bin,建议使用WPS或类似软件打开,显示正常即表示导出成功。
666

被折叠的 条评论
为什么被折叠?



