list转excel
第一步:导包
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.1</version>
<scope>compile</scope>
</dependency>
第二步:cv
public static void listToExcelNull(List<?> list,OutputStream outputStream,Class<?> clazz){
List<Map<String,String>> listMap = listToMap(list);
listToExcel(listMap,clazz,outputStream);
}
private static List<Map<String, String>> listToMap(List<?> list) {
if (Objects.isNull(list) || list.size() == 0 ){
return null;
}
List<Field> listFiled = Arrays.asList(list.get(0).getClass().getDeclaredFields());
return list
.stream()
.map(s-> listFiled.stream().collect(Collectors.toMap(Field::getName, value ->getValue(value,s))))
.collect(Collectors.toList());
}
private static String getValue(Field value, Object clazz) {
String v;
try {
value.setAccessible(true);
v = (String) value.get(clazz);
}catch (IllegalAccessException e){
e.printStackTrace();
v = "";
}
return v;
}
public static void listToExcel(List<Map<String,String>> list,Class<?> clazz,OutputStream outputStream){
listToExcel(list,getHeader(clazz),outputStream);
}
private static List<String> getHeader(Class<?> clazz) {
return Arrays
.stream(clazz.getDeclaredFields())
.map(Field::getName)
.collect(Collectors.toList());
}
public static void listToExcel(List<Map<String,String>> list,List<String> header,OutputStream outputStream){
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
//创建第一行
HSSFRow row = sheet.createRow(0);
HSSFCell cell;
for (int i = 0 ; i < header.size() ;i ++){
cell = row.createCell(i);
cell.setCellValue(header.get(i));
}
//创建内容
for (int i = 0 ; i < list.size() ;i ++){
HSSFRow nextRow = sheet.createRow(i+1);
Map<String,String> map = list.get(i);
HSSFCell dataCell;
for (int j = 0 ; j < header.size() ;j ++){
dataCell = nextRow.createCell(j);
String value = map.get(header.get(j));
dataCell.setCellValue(value);
}
}
try {
workbook.write(outputStream);
}catch (IOException ioException){
ioException.printStackTrace();
}
}
第三步:调接口