Spring MVC的Excel打印

import java.io.FileInputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

StringUtil;//这个是判断为空的类


@Controller
public class ExcelController
{


@RequestMapping(value = "{fileName}.xls", method =
{ RequestMethod.POST })
public void printExcel(@PathVariable String fileName, HttpServletRequest request, HttpServletResponse response)
throws Exception
{
Map<String, String[]> paramMap = request.getParameterMap();
Map<String, String> map = new HashMap<String, String>();
for (String key : paramMap.keySet())
{
String[] value = paramMap.get(key);
if (value.length == 1)
{
map.put(key, value[0]);
}
}
response.reset();
String docPath = 路径
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(docPath));// 建立新HSSFWorkbook对象
HSSFSheet sheet = workbook.getSheetAt(0);
Iterator<Row> rows = sheet.rowIterator();
while (rows.hasNext())
{
Row row = rows.next();
Iterator<Cell> cells = row.cellIterator();
while (cells.hasNext())
{
Cell cell = cells.next();
cell.setCellType(Cell.CELL_TYPE_STRING);
String value = cell.getStringCellValue();
if (StringUtil.isNotEmpty(value))
{
String regex = "\\#\\{.*\\}";
Pattern patten = Pattern.compile(regex);
Matcher matcher = patten.matcher(value);
if (matcher.matches())
{
String key = value.replaceAll("[#{}]", "").trim();
cell.setCellValue(map.get(key));
}
}
}
}

OutputStream out = response.getOutputStream();
workbook.write(response.getOutputStream());
response.setHeader("Content-disposition", "attachment; filename="
+ new String(fileName.getBytes("GB2312"), "ISO_8859_1") + ".xls");
response.setContentType("application/vnd.ms-excel");
out.flush();
out.close();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值