将list数据读入一个excel中的sheet工作簿
public void export(
//wb为HSSFWorkbook对象由于我写的时候需要创建多个sheet故每次调用传同一个wb
//sheetName就是工作簿的名字,此处工作簿的名字不能相同
//columns 由于差的数据并一定需要将整个javabean全部属性都导出,故传所需name进行get方法拼接
//headers用于传入每个sheet中第一排每一列的列名,不可能直接给客户看属性名对吧!
HSSFWorkbook wb,String sheetName,String[] headers, String[] columns,List<T> lists)
throws Exception
{
//创建一个空的sheet工作簿
HSSFSheet sheet = wb.createSheet(sheetName);
//列宽
sheet.setDefaultColumnWidth(15);
HSSFCellStyle style = wb.createCellStyle();
HSSFRow row = sheet.createRow(0);
style.setAlignment(HSSFCellStyle.ALIGN_LEFT);
//设置列名
for (int i = 0; i < headers.length; i++) {
HSSFCell headerCell = row.createCell(i);
headerCell.setCellValue(headers[i]);
headerCell.setCellStyle(style);
}
//遍历对象
Iterator<T> it = lists.iterator();
int rowIndex = 0;
while (it.hasNext()) {
rowIndex++;
row = sheet.createRow(rowIndex);
Object t =it.next();
//得到某个对象的所有属性
Field[] fields = t.getClass()
.getDeclaredFields();
//进行对比,有就执行拼接,进行get,invoke赋值
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
String fieldName = field.getName();
for (int j = 0; j < columns.length; j++) {
if (fieldName.equals(columns[j])) {
String getMethodName = "get" +
fieldName.substring(0, 1).
toUpperCase() + fieldName.
substring(1);
Class cls = t.getClass();
Method getMethod = cls.getMethod(
getMethodName, new Class[] {});
Object val = getMethod.invoke(
t, new Object[] {});
String textVal = null;
if (null != val) {
textVal = val.toString();
} else {
textVal = null;
}
row.createCell(j).
setCellValue(textVal);
}
}
}
}
}
将list数据读入一个excel中的sheet工作簿
//创建一个excel对象
HSSFWorkbook wb = new HSSFWorkbook();
String sheetName1="工作簿名";
String [] headers1={"第一列名1”,"","","",""};
String [] columns1={"属性名1","","","","",""};
List<T> list1=(List<T>) iBusinessManagerService3.countQsqy(params).getData();
iBusinessManagerService3.export(wb, sheetName1, headers1, columns1, list1);
response.setContentType("application/OCTET-STREAM;charset=utf-8");
// // 设置文件头:最后一个参数是设置下载文件名
response.addHeader("Content-Disposition", "attachment;filename=" + new String("excel名字".getBytes(),"ISO8859-1") + ".xls");
// // 获取输出流
OutputStream out = null;
out = response.getOutputStream();
wb.write(out);
out.flush();
out.close();
需要导入poi的常用jar包
这个方法也是直接网上看到的,微微改了下,分享下