您的位置:首页 > 编程语言 > Java开发

Java 导出Excel方法一

2016-03-07 15:01 495 查看
/**
* 功能说明: 导出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;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: