封装一个导出文件工具

参数讲解:

1.第一个参数:第一行显示的信息(如 姓名  年龄  升高  体重 等等)

2.第二个参数:为要替换进去的数据(比如  name age hight  weight ..)

3.第三个参数:为从数据库中查出的数据

4.第四个参数:为文件名可以随便起


public static<T> void exportExcel(List<String> headAttribute,List<String> bodyAttribute,List<T> bodyData,String fileName){

   
    MutiStyleExcelWrite mew = new MutiStyleExcelWrite();
    ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
    HttpServletResponse response = attributes.getResponse();
    response.reset();
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition", "attachment;fileName="+fileName+System.currentTimeMillis()+".xls");
response.setContentType("application/shlnd.ms-excel");
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
    try{
    mew.createExcel(response.getOutputStream(),bodyData, bodyAttribute, headAttribute,fileName, fileName);
    }catch(Exception e){
    throw new RuntimeException(e);
    }

    }




import jxl.Workbook;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;


public class MutiStyleExcelWrite  {

    public <T> void  createExcel(OutputStream os,List<T> objList,
List<String> propOrderList, List<String> tableHeadList,
String excelName, String sheetName) throws WriteException,IOException {
        //创建工作薄
        WritableWorkbook workbook = Workbook.createWorkbook(os);
        //创建新的一页
        WritableSheet sheet = workbook.createSheet("First Sheet", 0);      
        
        //构造表头   
        createExcelHead(sheet,tableHeadList);
        WritableFont boldNumber = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//黑体
        WritableCellFormat boldNumberFormate = new WritableCellFormat(boldNumber);
        
        if(objList!=null&&!"".equals(objList)){
for (int objNum = 0; objNum < objList.size(); objNum++) {
for (int cellNum = 0; cellNum < propOrderList.size(); cellNum++) {
// 将属性的首字母大写
String propertyName = propOrderList.get(cellNum).replaceFirst(
propOrderList.get(cellNum).substring(0, 1),
propOrderList.get(cellNum).substring(0, 1)
.toUpperCase());
//设置单元格宽度
sheet.setColumnView(cellNum+1,15);
try {
// 如果type是类类型,则前面包含"class ",后面跟类名
Method m = objList.get(objNum).getClass()
.getMethod("get" + propertyName);
// 调用getter方法获取属性值
Object property = m.invoke(objList.get(objNum));
//整形数据
if (property instanceof Integer ) {
Number ints = new Number(cellNum,1+objNum,(Integer)property);
sheet.addCell(ints);
}else if(property instanceof Float){
Number ints = new Number(cellNum,1+objNum,(Float)property);
sheet.addCell(ints);
}else if(property instanceof Double){
Number ints = new Number(cellNum,1+objNum,(Double)property);
sheet.addCell(ints);
}else if(property instanceof Long){
Number ints = new Number(cellNum,1+objNum,(Long)property);
sheet.addCell(ints);
}else  if (property instanceof Date) {
String strdate  = TimeHelper.dateTimeToStr2((Date) property,
"yyyy-MM-dd HH:mm:ss") ;
Label example = new Label(cellNum,1+objNum,strdate);
sheet.addCell(example);
}
else{
Label example = new Label(cellNum,1+objNum,(String)property,boldNumberFormate);
sheet.addCell(example);
}
} catch (Exception e) {
log.error("生成excel解析数据出错:"+ e);
}
}
}
        }
        //把创建的内容写入到输出流中,并关闭输出流
        workbook.write();
        workbook.close();
        os.close(); 
    }



    public  void createExcelHead( WritableSheet sheet,
List<String> tableHeadList) throws RowsExceededException, WriteException {
for (int cellNum = 0; cellNum < tableHeadList.size(); cellNum++) {
Label floats = new Label(cellNum,0,tableHeadList.get(cellNum));
sheet.addCell(floats);
}
}
    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值