java 导出excel代码

来源:互联网 发布:linux shell $() 编辑:程序博客网 时间:2024/06/01 09:07
首先是类库文件:
import java.io.OutputStream;import java.util.LinkedHashMap;import java.util.List;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.HSSFRichTextString;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.util.HSSFColor;public class ExportExcelUtils {/** *  * 导出Excel的方法  *  * *  * @param title *            excel中的sheet名称  * @param headers *            表头  * @param columns *            表头对应的数据库中的列名  * @param result *            结果集  * @param out *            输出流  * @param pattern *            时间格式  * @throws Exception *              */public static void exportExcel(String title, String[] headers,String[] columns, List<LinkedHashMap<String, Object>> result,OutputStream out, String pattern) throws Exception {// 声明一个工作薄HSSFWorkbook workbook = new HSSFWorkbook();// 生成一个表格HSSFSheet sheet = workbook.createSheet(title);// 设置表格默认列宽度为20个字节sheet.setDefaultColumnWidth(20);// 生成一个样式HSSFCellStyle style = workbook.createCellStyle();// 设置这些样式style.setFillForegroundColor(HSSFColor.GOLD.index);style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);style.setBorderBottom(HSSFCellStyle.BORDER_THIN);style.setBorderLeft(HSSFCellStyle.BORDER_THIN);style.setBorderRight(HSSFCellStyle.BORDER_THIN);style.setBorderTop(HSSFCellStyle.BORDER_THIN);style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 生成一个字体HSSFFont font = workbook.createFont();font.setColor(HSSFColor.VIOLET.index);// font.setFontHeightInPoints((short) 12);font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 把字体应用到当前的样式style.setFont(font);// 指定当单元格内容显示不下时自动换行style.setWrapText(true);/* *  * 以下可以用于设置导出的数据的样式 *  // 生成并设置另一个样式 HSSFCellStyle style2 = workbook.createCellStyle(); * style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index); * style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); * style2.setBorderBottom(HSSFCellStyle.BORDER_THIN); * style2.setBorderLeft(HSSFCellStyle.BORDER_THIN); * style2.setBorderRight(HSSFCellStyle.BORDER_THIN); * style2.setBorderTop(HSSFCellStyle.BORDER_THIN); * style2.setAlignment(HSSFCellStyle.ALIGN_CENTER); * style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // * 生成另一个字体 HSSFFont font2 = workbook.createFont(); * font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); // 把字体应用到当前的样式 * style2.setFont(font2); // 声明一个画图的顶级管理器 HSSFPatriarch patriarch = * sheet.createDrawingPatriarch(); *  *  // 定义注释的大小和位置,详见文档 HSSFComment comment = patriarch.createComment(new * HSSFClientAnchor(0, 0, 0, 0, (short) 4, 2, (short) 6, 5)); // 设置注释内容 * comment.setString(new HSSFRichTextString("可以在POI中添加注释!")); // * 设置注释作者,当鼠标移动到单元格上是可以在状态栏中看到该内容. comment.setAuthor("leno"); */// 产生表格标题行HSSFRow row = sheet.createRow(0);for (int i = 0; i < headers.length; i++) {HSSFCell cell = row.createCell(i);cell.setCellStyle(style);HSSFRichTextString text = new HSSFRichTextString(headers[i]);cell.setCellValue(text);}// 遍历集合数据,产生数据行if (result != null) {int index = 1;for (LinkedHashMap<String, Object> m : result) {row = sheet.createRow(index);int cellIndex = 0;for (String s : columns) {HSSFCell cell = row.createCell(cellIndex);// cell.setCellStyle(style2);HSSFRichTextString richString = new HSSFRichTextString(m.get(s) == null ? "" : m.get(s).toString());// HSSFFont font3 = workbook.createFont();// font3.setColor(HSSFColor.BLUE.index);// richString.applyFont(font3);cell.setCellValue(richString);cellIndex++;}index++;}}workbook.write(out);}}


其次是调用类库的代码部分:

DateTime dt = new DateTime();// ************///try {HttpServletResponse resp = (HttpServletResponse) response;resp.setContentType("octets/stream");resp.addHeader("Content-Disposition","attachment;filename=" + dt.getMillis()+ ".xls");OutputStream out = resp.getOutputStream();// 从数据库中查出infoList = infoService.findInfoListByWhere(sqlWhere);List<LinkedHashMap<String, Object>> result = new ArrayList<LinkedHashMap<String, Object>>();for (int i = 0; i < infoList.size(); i++) {LinkedHashMap<String, Object> mapp = new LinkedHashMap<String, Object>();Info info = infoList.get(i);mapp.put("USERNAME", info.getUsername());mapp.put("UEMAIL", info.getUemail());mapp.put("ORGAN", info.getOrgan());// mapp.put("ISTURN", info.getIsturn());String isturn = info.getIsturn();if ("0".equals(isturn)) {mapp.put("ISTURN", "否");} else if ("1".equals(isturn)) {mapp.put("ISTURN", "是");} else {mapp.put("ISTURN", "");}mapp.put("NEWORGAN", info.getNeworgan());String sex = info.getSex();if ("1".equals(sex)) {mapp.put("SEX", "男");} else if ("2".equals(sex)) {mapp.put("SEX", "女");} else {mapp.put("SEX", "");}mapp.put("BIRTH", info.getBirth());mapp.put("NOWDUTY", info.getNowduty());mapp.put("JOINDATE", info.getJoindate());mapp.put("RESEARCHAREA", info.getResearcharea());mapp.put("ALLMONEY", info.getAllmoney());mapp.put("USEDMONEY", info.getUsedmoney());mapp.put("AWARDNUMBER", info.getAwardnumber());mapp.put("AWARDNAME", info.getAwardname());mapp.put("SUMUP", info.getSumup());mapp.put("ADVICE", info.getAdvice());mapp.put("COMMITTIME", info.getCommittime());result.add(mapp);}String[] headers = { "姓名", "Email", "单位", "是否转单位","新单位", "性别", "生日", "职务", "入会日期", "研究方向","到账经费(万元)", "使用经费(万元)", "奖励项数", "奖励名称", "个人总结","建议(体会)", "提交日期" };String[] columns = { "USERNAME", "UEMAIL", "ORGAN","ISTURN", "NEWORGAN", "SEX", "BIRTH","NOWDUTY", "JOINDATE", "RESEARCHAREA","ALLMONEY", "USEDMONEY", "AWARDNUMBER","AWARDNAME", "SUMUP", "ADVICE", "COMMITTIME" };ExportExcelUtils.exportExcel("sheet1", headers,columns, result, out, "");out.close();} catch (Exception e) {e.printStackTrace();}


 

原创粉丝点击