1,使用STS.exe工具生成个SpringMVC工程
2,自定义个视图类继承AbstractExcelView重写buildExcelDocument方法!
package org.test.excel;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.view.document.AbstractExcelView;
@Component
public class ExcelView extends AbstractExcelView{
//public class ExcelRevenueReportView implements View {
// @Override
// public String getContentType() {
// return "text/html";
// }
// @Override
// public void render(Map<String, ?> model, HttpServletRequest request,
// HttpServletResponse response) throws Exception {
// response.getWriter().print("hello view, time: " + new Date());
// }
@Override
protected void buildExcelDocument(Map model, HSSFWorkbook workbook,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
Map<String,String> excelData = (Map<String,String>) model.get("excelData");
//create a wordsheet
HSSFSheet sheet = workbook.createSheet();
HSSFRow header = sheet.createRow(0);
header.createCell(0).setCellValue("名字");
header.createCell(1).setCellValue("内容");
int rowNum = 1;
for (Map.Entry<String, String> entry : excelData.entrySet()) {
HSSFRow row = sheet.createRow(rowNum++);
row.createCell(0).setCellValue(entry.getKey());
row.createCell(1).setCellValue(entry.getValue());
}
}
}
3,修改servlet-context.xml配置文件,确保自定义个excelView类可以优先加载
<beans:bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
<beans:property name="order" value="1"/>
</beans:bean>
4,修改pom.xml,将生成用excel文件的jar导入,否则会报告异常
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.7</version>
</dependency>
5,追加control类,对应的映射方法
package org.test.excel;
import java.text.DateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Handles requests for the application home page.2016/1/23
*/
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
return "home";
}
@RequestMapping(value = "/excel", method = RequestMethod.GET)
public String excel(Locale locale, Model model) {
logger.info("Welcome excel! The client locale is {}.", locale);
Map<String,String> excelData = new HashMap<String,String>();
excelData.put("AAAA", "你好");
excelData.put("BBBB", "再见");
model.addAttribute("excelData", excelData);
return "excelView";
}
}
运行效果:
名字 | 内容 |
AAAA | 你好 |
BBBB | 再见 |