import org.apache.poi.usermodel.HSSFCell;
import org.apache.poi.usermodel.HSSFRow;
import org.apache.poi.usermodel.HSSFSheet;
import org.apache.poi.usermodel.HSSFWorkbook;
import org.springframwork,util.ReflectionUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class GenerateExcle<T>{
/**
*@param lsit 文件内容
*@param keys 属性信息
*@parm columns 行标题
*@param fileName 文件名
*@param <T> list实体对象
*trrows Exception
*/
public static<T> viod generate(List<T> list,List<String> keys,List<String> columns,String fileName) throws Exception{
String path = "/home/spool";
HSSFWorkbook workbook = new HSSWorkbook();
HSSFSheet sheet = workbook.createSheet();
sheet.setDefaultColumnWidth(20);
//创建标题行
HFSSRow row = sheet.createRow(0);
for(int i=0;i<columns.size();i++){
HSSFCell createCell = row.createCell(i);
createCell.setCellValue(columns.get(i));
}
HFSSRow rowi = null;
HSSFCell createCell = null;
for(int i=0;i<list.size();i++)
T t = list.get(i);
Class<?> cls = t.getClass();
Files[] fields = cls.getDeclareFields();
rowi = sheet.createRow(i+1);//创建行
for(int j=0;j<keys.size();j++){
createCell = rowi.createCell(j);//设置单元格内容
ReflectionUtils.makeAccessible(fields[j]);//fortify安全扫描使用srping提供的工具类
String name = key.get(j);
name = name.replaceFirst(name.substring(0,1),name.substring(0,1).toUpperCase());
Method m = cls.getMethod("get"+name);
String rs;
try {
rs = m.invok(t).toString();
}catch (Exception e){
rs = "";
}
createCell .setValue(rs);
}
}
//写出
File file = new File(path,fileName);//在指定位置创建文件
OutputStream out = null;
try {
if(!file.esists()){//如果文件不存在,则创建新文件
file.createNewFile();
}else{//如果文件存在,删除存在的文件,并创建新文件
file.delete();
file.createNewFile();
}
out = new FileOutputStream(file);
workbool.write(out);
}catch(Exception e){
e.printStackTrace();
}fianlly{
if(out!=null){
out.close();
}
}
}
/**************************************************************************************************
*调用
* List<String> keys = Arrays.asList("fsBank","fsEntNo","fsMode");
*List<String> columns = Arrays.asList("机构编码","企业编码","业务类型");
*ArrayList list<PO> polist = new ArrayList<~>();
*GenerateExcle.generate(polist,keys,columns,"abc.xls);
**************************************************************************************************/
}
原文:https://www.cnblogs.com/cjl-lhj/p/14763579.html