import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddress;
import java.io.*;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ExcelUtils {
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
List<String> head = new ArrayList<>();
Map<String, String> map = new HashMap<>();
putHeadAndVlue(head,map,"列名", "id");
putHeadAndVlue(head,map,"列名2", "id2");
List body = new ArrayList();
实体对象 sys = new 实体对象();
body.add(sys);
HSSFWorkbook hssfWorkbook = expExcel(head, body, 实体类对象.class, map);
outFile(hssfWorkbook, "D:\\data\\1.xls");
}
private void putHeadAndVlue(List<String> head , Map<String, String> map , String headKey, String headValue) {
orderYearHead.add(headKey);
orderYearMap.put(headKey, headValue);
}
/**
* 创建excel并填入数据
*
* @param head 数据头
* @param body 主体数据
* @param entityClass class对象
* @param map title和对象字段映射
* @return HSSFWorkbook
*/
public static HSSFWorkbook expExcel(List<String> head, List body, Class entityClass, Map<String, String> map) {
Object newEntity = null;
try {
newEntity = entityClass.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
//创建一个excel工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
//创建一个sheet工作表
HSSFSheet sheet = workbook.createSheet("sheet1");
//创建第0行表头,再在这行里在创建单元格,并赋值
HSSFRow row = sheet.createRow(0);
HSSFCell cell = null;
for (int i = 0; i < head.size(); i++) {
cell = row.createCell(i);
cell.setCellValue(head.get(i));//设置值
}
//将主体数据填入Excel中
for (int i = 0, isize = body.size(); i < isize; i++) {
row = sheet.createRow(i + 1);
newEntity = body.get(i);
for (int j = 0; j < head.size(); j++) {
cell = row.createCell(j);
String fieldValueByName = getFieldValueByName(newEntity, map.get(head.get(j)));
cell.setCellValue(fieldValueByName);//设置值
}
}
return workbook;
}
private static String getFieldValueByName(Object object, String fieldName) {
Object value = null;
try {
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getter = "get" + firstLetter + fieldName.substring(1);
Method method = object.getClass().getMethod(getter, new Class[]{});
value = method.invoke(object, new Object[]{});
} catch (Exception e) {
System.out.println(e.getMessage());
return "";
}
return value == null ? "" : value.toString();
}
/**
* 文件输出
*
* @param workbook 填充好的workbook
* @param path 存放的位置
*/
public static void outFile(HSSFWorkbook workbook, String path) {
OutputStream os = null;
try {
os = new FileOutputStream(new File(path));
workbook.write(os);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
poi使用导出excel工具类--jerry出品
最新推荐文章于 2024-09-03 20:52:56 发布