package com.cwl.utilty.excel;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.rstj.util.excel.ExcelHeader;
public class SimpleExportToExcelUtilty {
public static void exportExcel(String title,
List<Map<String, Object>> lstMap, OutputStream outputStream,
ExcelHeader... headers) throws Exception {
// 声明一个工作薄
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet(title);
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
HSSFFont font = wb.createFont();
font.setFontName("微软雅黑");
font.setFontHeightInPoints((short) 16);// 设置字体大小
// 把字体应用到当前的样式
style.setFont(font);
// dataIndex标识位Map
Map<String, Object> mapDataIndex = new HashMap<String, Object>();
// 产生表格标题行
HSSFRow row = sheet.createRow(0);
HSSFCell cell;
for (int i = 0; i < headers.length; i++) {
cell = row.createCell(i);
cell.setCellStyle(style);
cell.setCellValue(headers[i].getText().toString());
mapDataIndex.put(headers[i].getDataIndex(), i);
mapDataIndex.put("s$" + headers[i].getDataIndex(), headers[i]
.getExcelFieldStrategy());
}
// 生成数据
for (int j = 0; j < lstMap.size(); j++) {
row = sheet.createRow(j + 1);
for (String mapKey : lstMap.get(j).keySet()) {
if (mapDataIndex.get(mapKey) == null) {
continue;
}
cell = row.createCell(new Integer(mapDataIndex.get(mapKey)
.toString()));
ExcelFieldStrategyInterface excelFieldStrategy = mapDataIndex
.get("s$" + mapKey) == null ? null
: (ExcelFieldStrategyInterface) mapDataIndex.get("s$"
+ mapKey);
Object obj = lstMap.get(j).get(mapKey);
if (obj == null) {
obj = "";
}
String value = null;
if (excelFieldStrategy != null) {
cell.setCellValue((String) excelFieldStrategy
.operateField(obj));
} else if (obj instanceof Date) {
Date date = (Date) obj;
SimpleDateFormat sdf = new SimpleDateFormat(headers[cell
.getColumnIndex()].getYyMMdd());
value = sdf.format(date);
cell.setCellValue(value);
} else if (obj instanceof Integer) {
int val = ((Integer) obj).intValue();
cell.setCellValue(val);
} else if (obj instanceof Double) {
double val = (Double) obj;
cell.setCellValue(val);
} else {
cell.setCellValue(obj.toString());
}
}
}
wb.write(outputStream);
}
public static void exportExcelForList(String title, List<?> lst,
OutputStream outputStream, ExcelHeader... headers) throws Exception {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet(title);
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
HSSFFont font = wb.createFont();
font.setFontName("微软雅黑");
font.setFontHeightInPoints((short) 16);// 设置字体大小
// 把字体应用到当前的样式
style.setFont(font);
// dataIndex标识位Map
Map<String, Object> mapDataIndex = new HashMap<String, Object>();
// 产生表格标题行
HSSFRow row = sheet.createRow(0);
HSSFCell cell;
for (int i = 0; i < headers.length; i++) {
sheet.setColumnWidth(i, headers[i].getText().length() * 2400);
cell = row.createCell(i);
cell.setCellStyle(style);
cell.setCellValue(headers[i].getText().toString());
mapDataIndex.put(headers[i].getDataIndex(), i);
mapDataIndex.put("s$" + headers[i].getDataIndex(), headers[i]
.getExcelFieldStrategy());
}
// 填充数据
for (int i = 0; i < lst.size(); i++) {
row = sheet.createRow(i + 1);
Class<? extends Object> t = (Class<? extends Object>) lst.get(i)
.getClass();
Field[] fields = t.getDeclaredFields();
for (Field field : fields) {
String fieldName = field.getName();
if (mapDataIndex.get(fieldName) == null) {
continue;
}
Object obj = MethodUtil.doFiledGetMehod(lst.get(i), fieldName);
if (obj == null) {
obj = "";
}
cell = row.createCell(new Integer(mapDataIndex.get(fieldName)
.toString()));
ExcelFieldStrategyInterface excelFieldStrategy = mapDataIndex
.get("s$" + fieldName) == null ? null
: (ExcelFieldStrategyInterface) mapDataIndex.get("s$"
+ fieldName);
String value = null;
if (excelFieldStrategy != null) {
cell.setCellValue((String) excelFieldStrategy
.operateField(obj));
} else if (obj instanceof Date) {
Date date = (Date) obj;
SimpleDateFormat sdf = new SimpleDateFormat(headers[cell
.getColumnIndex()].getYyMMdd());
value = sdf.format(date);
cell.setCellValue(value);
} else if (obj instanceof Integer) {
int val = ((Integer) obj).intValue();
cell.setCellValue(val);
} else if (obj instanceof Double) {
double val = (Double) obj;
cell.setCellValue(val);
} else {
cell.setCellValue(obj.toString());
}
}
}
wb.write(outputStream);
}
}
excel 自定义列导出, excel导出
1星 需积分: 46 70 浏览量
2014-01-16
11:50:54
上传
评论
收藏 2MB ZIP 举报
云说我会笑
- 粉丝: 0
- 资源: 5
最新资源
- 这是一个保存Springboot+MyBaits项目的仓库.zip
- tensorflow-gpu-2.7.2-cp39-cp39-manylinux2010-x86-64.whl
- tensorflow-2.7.4-cp38-cp38-manylinux2010-x86-64.whl
- tensorflow-gpu-2.7.4-cp38-cp38-manylinux2010-x86-64.whl
- 詹佳 陈敏 口语2.mp3
- 图书管理系统毕业设计Java语言实现
- turtle-0.0.2.zip
- 机器学习(股票),基于机器学习算法支持向量机SVM的交易策略
- 1713969763417.png
- 国家药品编码本位码,国家药品编码本位码,国家药品编码本位码,国家药品编码本位码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈