导出excel详解编程语言
public enum Align{
left((short)1),center((short)2),right((short)3);
private short align;
private Align(short align){
this.align = align;
}
public short getAlign(){
return this.align;
}
};
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Column {
public String desc();
public int width() default 6000;
}
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Sheet {
public String name();
}
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.poi.hssf.record.cf.BorderFormatting;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
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.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ExportUtil {
private Logger logger = LoggerFactory.getLogger(getClass());
public HSSFWorkbook exports(List List Object list) throws Exception {
HSSFWorkbook workbook = new HSSFWorkbook();
try {
for (int i = 0; i list.size(); i++) {
List Object ll = list.get(i);
List String titleList = new ArrayList String
List String colNames = new ArrayList String
List Integer widths = new ArrayList Integer
String sheetName = null;
if (ll != null !ll.isEmpty()) {
Object o = ll.get(0);
final Class cls = o.getClass();
Sheet sn = (Sheet) cls.getAnnotation(Sheet.class);
if (sn != null)
sheetName = sn.name();
final Field[] field = cls.getDeclaredFields();
for (int m = 0; m field.length; m++) {
Column cn = field[m].getAnnotation(Column.class);
if (cn != null) {
titleList.add(cn.desc());
widths.add(cn.width());
colNames.add(field[m].getName());
}
}
}
HSSFSheet sheet = this.sheet(workbook, sheetName, titleList, colNames, ll);
for(int j=0;j widths.size();j++){
sheet.setColumnWidth(j, widths.get(j));
}
}
} catch (Exception e) {
logger.info( 创建workbook异常 + e.getMessage() + );
throw e;
}
return workbook;
}
public HSSFWorkbook export(List Object list) throws Exception {
List List Object ll = new ArrayList List Object ();
ll.add(list);
return this.exports(ll);
}
public HSSFSheet sheet(HSSFWorkbook workbook, String title, List String titleList, List String colNames, List list) throws Exception {
HSSFSheet sheet = null;
if (title == null) {
sheet = workbook.createSheet();
} else {
sheet = workbook.createSheet(title);
}
CellStyle titleStyle = workbook.createCellStyle();
titleStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
titleStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
setBorder(titleStyle);
// 创建标题行
HSSFRow row = sheet.createRow(0);
for (int i = 0; titleList != null i titleList.size(); i++) {
row.createCell(i).setCellValue(titleList.get(i));
row.getCell(i).setCellStyle(titleStyle);
}
CellStyle textStyle = workbook.createCellStyle();
textStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
textStyle.setWrapText(true);
setBorder(textStyle);
CellStyle dateStyle = workbook.createCellStyle();
dateStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
dateStyle.setDataFormat(workbook.createDataFormat().getFormat( yyyy-mm-dd ));
setBorder(dateStyle);
CellStyle numberStyle = workbook.createCellStyle();
numberStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
setBorder(numberStyle);
// 创建数据行
for (int i = 0; list != null i list.size(); i++) {
Object o = list.get(i);
row = sheet.createRow(i + 1);
for (int j = 0, x = 0; colNames != null j colNames.size(); j++, x++) {
Object value = this.getBeanValue(o, colNames.get(j));
HSSFCell cell = row.createCell(x);
if (value instanceof Date) {
cell.setCellStyle(dateStyle);
cell.setCellValue((Date) value);
} else if (value instanceof String) {
cell.setCellStyle(textStyle);
cell.setCellValue(new HSSFRichTextString((String) value));
} else if (
value instanceof BigDecimal ||
value instanceof Float ||
value instanceof Double ||
value instanceof Integer) {
cell.setCellStyle(numberStyle);
if(value instanceof BigDecimal)
cell.setCellValue(((BigDecimal) value).doubleValue());
else if(value instanceof Integer){
cell.setCellValue(((Integer)value).doubleValue());
}else if(value instanceof Float){
cell.setCellValue(((Float)value).doubleValue());
}else if(value instanceof Double){
cell.setCellValue((Double)value);
}
}else if (value instanceof List){
x = this.createCell(x, row, (List)value, textStyle, dateStyle, numberStyle);
}else{
cell.setCellStyle(textStyle);
cell.setCellValue( );
}
}
}
return sheet;
}
private int createCell(int x,HSSFRow row, List ll, CellStyle textStyle, CellStyle dateStyle, CellStyle numberStyle){
for (int j=0; j ll.size(); j++,x++) {
Object value = ll.get(j);
HSSFCell cell = row.createCell(x);
if (value instanceof Date) {
cell.setCellStyle(dateStyle);
cell.setCellValue((Date) value);
} else if (value instanceof String) {
cell.setCellStyle(textStyle);
cell.setCellValue(new HSSFRichTextString((String) value));
} else if (
value instanceof BigDecimal ||
value instanceof Float ||
value instanceof Double ||
value instanceof Integer) {
cell.setCellStyle(numberStyle);
if(value instanceof BigDecimal)
cell.setCellValue(((BigDecimal) value).doubleValue());
else if(value instanceof Integer){
cell.setCellValue(((Integer)value).doubleValue());
}else if(value instanceof Float){
cell.setCellValue(((Float)value).doubleValue());
}else if(value instanceof Double){
cell.setCellValue((Double)value);
}
}else if (value instanceof List){
}else{
cell.setCellStyle(textStyle);
cell.setCellValue( );
}
}
return x;
}
private void setBorder(CellStyle titleStyle){
titleStyle.setBorderBottom(BorderFormatting.BORDER_THIN);
titleStyle.setBorderLeft(BorderFormatting.BORDER_THIN);
titleStyle.setBorderRight(BorderFormatting.BORDER_THIN);
titleStyle.setBorderTop(BorderFormatting.BORDER_THIN);
}
private Object getBeanValue(Object o, String field){
Object value = null;
try {
PropertyDescriptor[] pds = Introspector.getBeanInfo(o.getClass()).getPropertyDescriptors();
if(pds != null){
Method method = null;
for(int i=0;i pds.length;i++){
if(pds[i].getName().equals(field)){
method = pds[i].getReadMethod();
}
}
if(method != null){
value = method.invoke(o, null);
}
}
} catch (Exception e) {
logger.info( 导出excel异常 + e.getMessage() + );
}
return value;
}
}
File file = new File(filePath);
if (!file.exists()) file.getParentFile().mkdirs();
FileOutputStream fos = new FileOutputStream(file);
new ExportUtil().export(list).write(fos);
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/13558.html
cjava相关文章
- 将Excel转换为word_excel如何将横排变成竖排
- Excel创建动态单元格区域
- 导出Excel在GridView1.RenderControl报错
- 如何设置导出excel的格式
- VB.NET MDB数据库导出到Excel表生成分析报表
- MySQL表结构导出Excel、导出Word
- springMVC实现excel导出(简单封装版)详解编程语言
- jxl导出Excel工具类详解编程语言
- Java导入导出Excel工具类ExcelUtil详解编程语言
- Java导出excel工具类详解编程语言
- java excel导出详解编程语言
- excel导入导出详解编程语言
- java poi导出带有多个sheet页的excel详解编程语言
- java导出excel报表详解编程语言
- 使用POI生成Excel文件,可以自动调整excel列宽详解编程语言
- SAP STRANS 导出EXCEL详解编程语言
- phpexcel导出excel换行问题解决方法详解编程语言
- MySQL数据导出Excel快速教程(mysql转excel)
- SQL Server数据导出到Excel的方法(sqlserver导出到excel)
- 文件Linux下快速导出Excel文件(linux导出excel)
- Oracle将数据输出到Excel中(oracle写excel)
- 实现Redis数据批量导出至Excel(redis 转excel)
- PHP导出MySQL数据到Excel文件(fputcsv)
- asp.net生成Excel并导出下载五种实现方法
- JS将表单导出成EXCEL的实例代码