poi导出excel表格

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;


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


import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.contrib.HSSFCellUtil;
import org.apache.poi.hssf.util.Region;

import com.tools.string.DealString;
/**
 * 导出结果为Excel
 * @author Administrator
 *
 */
public class Excel {

@SuppressWarnings("deprecation")
public void expStuInfo(HttpServletResponse response,
HttpServletRequest request,
List<HashMap<String, String>> array,List<HashMap<String, String>> list,String parthName) throws Exception {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFCell cell;
HSSFSheet sheet = wb.createSheet("结果导出");




HSSFCellStyle cellStyle = setCellStyle(wb);
HSSFFont font = setFontStyle(wb, (short) 15, " 宋体 "); // 设置字体
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
cellStyle.setFont(font);
cellStyle.setVerticalAlignment((short) 1); // 单元格垂直 0 居上 1 居中 2 居下 3 正当
cellStyle.setWrapText(true);


HSSFCellStyle cellStyle1 = setCellStyle(wb);
HSSFFont font1 = setFontStyle(wb, (short) 12, " 宋体 ");
font1.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
cellStyle1.setFont(font1);
cellStyle1.setVerticalAlignment((short) 1);
cellStyle1.setWrapText(true);


HSSFCellStyle cellStyle2 = setCellStyle(wb);
HSSFFont font2 = setFontStyle(wb, (short) 12, " 宋体 ");
cellStyle2.setFont(font2);
cellStyle2.setVerticalAlignment((short) 1);
cellStyle2.setWrapText(true);

HSSFCellStyle cellStyle3 = setCellStyle(wb);
HSSFFont font3 = setFontStyle(wb, (short) 10, " 宋体 ");
cellStyle3.setFont(font3);
cellStyle3.setVerticalAlignment((short) 1);
cellStyle3.setWrapText(true);


HSSFCellStyle cellStyle4 = setCellStyle(wb);
HSSFFont font4 = setFontStyle(wb, (short) 10, " 宋体 ");
cellStyle4.setFont(font4);
cellStyle4.setVerticalAlignment((short) 1);
cellStyle4.setWrapText(true); // 设置单元格自动换行
cellStyle4.setAlignment((short) 2); // 单元格水平 0普通 1 左对齐2 居中3 右对齐4 填充5 正当6
// 居中选择

HSSFCellStyle cellStyle5 = setCellStyle(wb);
HSSFFont font5 = setFontStyle(wb, (short) 10, " 宋体 ");
font5.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
cellStyle5.setFont(font5);
cellStyle5.setVerticalAlignment((short) 1);
cellStyle5.setWrapText(true); // 设置单元格自动换行
cellStyle5.setAlignment((short) 2); // 单元格水平 0普通 1 左对齐2 居中3 右对齐4 填充5 正当6
// 居中选择

HSSFRow row1 = sheet.createRow((short) 0);
HSSFRow row;

ArrayList<String> zw = new ArrayList<String>();
ArrayList<String> yw = new ArrayList<String>();
for (int i = 0; i < array.size(); i++) {
Set<String> key = array.get(i).keySet();
for (Iterator<String> it = key.iterator(); it.hasNext();) {
String s = it.next();
zw.add(array.get(i).get(s));
yw.add(s);
}
}

for (int i = 0; i < array.size(); i++) {
cell = row1.createCell((short) i);
cell.setCellValue(zw.get(i));
cell.setCellStyle(cellStyle5);
sheet.setColumnWidth((short) i, (short) 5900);
}

for (int i = 0; i < list.size(); i++) {
HashMap<String, String> map = list.get(i);
row = sheet.createRow((short) (1 + i));
for (int j = 0; j < yw.size(); j++) {
cell = row.createCell((short) j);
cell.setCellValue(DealString.toString(map.get(yw.get(j))));
cell.setCellStyle(cellStyle4);
}
}

response.reset();
response.setContentType("application/vnd.ms-excel");
response.addHeader("Content-Disposition", "attachment; filename="
+ new String(parthName.getBytes(), "ISO8859-1"));
wb.write(response.getOutputStream());
response.getOutputStream().close();
}


private HSSFFont setFontStyle(HSSFWorkbook wb, short height, String fontName) {
HSSFFont fontStyle = wb.createFont();
fontStyle.setFontHeightInPoints(height); // 字体高度
fontStyle.setFontName(fontName); // 字体
return fontStyle;
}

private HSSFCellStyle setCellStyle(HSSFWorkbook wb) {
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
return cellStyle;
}

// 合并单元各后设置边框
@SuppressWarnings("unused")
private void setRegionStyle(HSSFSheet sheet, Region region, HSSFCellStyle cs) {
for (int i = region.getRowFrom(); i <= region.getRowTo(); i++) {
HSSFRow row = HSSFCellUtil.getRow(i, sheet);
for (int j = region.getColumnFrom(); j <= region.getColumnTo(); j++) {
HSSFCell cell = HSSFCellUtil.getCell(row, (short) j);
cell.setCellStyle(cs);
}
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值