java 导出excel代码

85 篇文章 0 订阅
首先是类库文件:
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();
					}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值