Java 导出Excel方法一

/**
 * 功能说明: 导出Excel 
 */
public class ExcelUtils {

	/**
	 * 功能描述:导出Excel表格方法一(以Object的形式导出)
	 * 
	 * 
	 * @param list
	 * @param headers
	 */
	public static void exportExcel(HttpServletResponse response,
			String fileName, List<?> list, String[] colums, String[] headers,
			String dateFormat) throws Exception {
		int rowIndex = 0;
		Workbook workbook = new HSSFWorkbook(); // 创建一个工作簿
		Sheet sheet = workbook.createSheet(); // 创建一个Sheet页
		sheet.autoSizeColumn((short) 0); // 单元格宽度自适应
		Row row = sheet.createRow(rowIndex++); // 创建第一行(头部)
		CreationHelper helper = workbook.getCreationHelper();
		CellStyle style = workbook.createCellStyle(); // 设置单元格样式
		style.setDataFormat(helper.createDataFormat().getFormat(dateFormat)); // 格式化日期类型
		for (int i = 0; i < headers.length; i++) { // 输出头部
			row.createCell(i).setCellValue(headers[i]);
		}
		for (Object obj : list) {
			List<Object> values = ExcelUtils.getFieldValuesByNames(colums, obj);
			row = sheet.createRow(rowIndex++);
			for (int j = 0; j < values.size(); j++) {
				row.createCell(j).setCellValue(values.get(j).toString());
			}
		}
		String ddate = new SimpleDateFormat("yyyyMMddhhmmss").format(Calendar
				.getInstance().getTime());
		response.setContentType("application/vnd.ms-excel;charset=UTF-8");
		response.setHeader("Content-Disposition", "attachment; filename="
				+ new String(fileName.getBytes("gb2312"), "iso8859-1") + "_"
				+ ddate + ".xls");// 设定输出文件头
		OutputStream output = response.getOutputStream();
		workbook.write(output);
		output.flush();
		output.close();
	}


	public static List<Object> getFieldValuesByNames(String[] fieldNames,
			Object o) {
		List<Object> list = new ArrayList<Object>();
		try {
			Class<?> clz = o.getClass();
			for (String fieldName : fieldNames) {
				String firstLetter = fieldName.substring(0, 1).toUpperCase();
				String getter = "get" + firstLetter + fieldName.substring(1);
				Method method = clz.getMethod(getter, new Class[] {});
				Object value = method.invoke(o, new Object[] {});
				list.add(value);
			}
			return list;
		}
		catch (Exception e) {
			return null;
		}
	}
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值