public static void getHSSFWorkbook(List lists,HttpServletResponse response){
if(lists.size() == 0){
throw new CustomizeException(1,"数组为空");
}
Class<?> Clazz = lists.get(0).getClass();
Field[] fields = Clazz.getDeclaredFields();
String[] title = new String[fields.length];
for(int i=0;i<fields.length;i++){
title[i] = fields[i].getName();
}
String fileName = Clazz.getName().substring(Clazz.getName().indexOf("V")) + System.currentTimeMillis() + ".xls";
String sheetName = Clazz.getName().substring(Clazz.getName().indexOf("V"));
String[][] content = new String[lists.size()][];
for (int i=0;i<lists.size();i++) {
//放入一维数组
String[] l = new String[title.length];
content[i] = l;
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
PropertyDescriptor pd = null;
try {
for(int i=0;i<lists.size();i++){
for(int j=0;j<title.length;j++){
pd = new PropertyDescriptor(fields[j].getName(), lists.get(i).getClass());
Object invoke = pd.getReadMethod().invoke(lists.get(i));
if(invoke instanceof Date){
invoke = simpleDateFormat.format(invoke);
}
content[i][j] = String.valueOf(invoke);
}
}
} catch (IntrospectionException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
// 第一步,创建一个HSSFWorkbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(sheetName);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
HSSFRow row = sheet.createRow(0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
//声明列对象
HSSFCell cell = null;
//创建标题
for (int i = 0; i < title.length; i++) {
cell = row.createCell(i);
cell.setCellValue(title[i]);
cell.setCellStyle(style);
}
//创建内容
for (int i = 0; i < content.length; i++) {
row = sheet.createRow(i + 1);
sheet.setColumnWidth(i,1000);
for(int j=0;j<content[i].length;j++){
//将内容按顺序赋给对应的列对象
row.createCell(j).setCellValue(content[i][j]);
}
}
setResponseHeader(response,fileName);
try {
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//发送响应流方法
public static void setResponseHeader(HttpServletResponse response, String fileName) {
try {
try {
fileName = new String(fileName.getBytes(),"ISO8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
response.setContentType("application/octet-stream;charset=ISO8859-1");
response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
} catch (Exception ex) {
ex.printStackTrace();
}
}
只需要传入实体类
这种格式就可以