Excel导出

package com.bestway.bcus.client.checkstock;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.apache.commons.beanutils.PropertyUtils;

import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class ExportExcel {

    List<String[]> columns = null;
    
    public List<Object> dataSource = null;
    
    public void setDataSource(List<Object> dataSource){
        this.dataSource = dataSource;
    }
    
    /**
     * 0:中文名称 1:对象的属性名称 2:列的宽
     * @param columns
     */
    public void setColumns(List<String[]> columns){
        this.columns = columns;
    }
    
    public void export(File file){
        try {
            if(file==null){
                System.out.println("导出路径为空");
                return;
            }
            WritableWorkbook book = Workbook.createWorkbook(file);
            WritableSheet sheet = book.createSheet("第一页", 0);
            setTitle(sheet);//设置标题
            setContent(sheet);//设置内容
            book.write();
            book.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
           
    }
    
    /**
     * 设置内容
     * @param sheet
     */
    public void setContent(WritableSheet sheet){
        try { 
            jxl.write.WritableCellFormat contentFormat = getStyle(false);
            
            for (int i = 0; i < dataSource.size(); i++) {
                for (int j = 0; j < columns.size(); j++) {
                    Object object = dataSource.get(i);
                    String[] propertyName = columns.get(j)[1].split("\\.");
                    Object obj = null;
                    for (int k = 0; k < propertyName.length; k++) {
                        obj = PropertyUtils.getSimpleProperty(object, propertyName[k]);
                        object = obj;
                    }
                    
                    
                    jxl.write.Number serialNumber = new jxl.write.Number(0,i+1,i+1,contentFormat);
                    sheet.addCell(serialNumber);
                    
                    if(obj instanceof String){
                        jxl.write.Label label = new jxl.write.Label(j+1,i+1,obj.toString(),contentFormat);
                        sheet.addCell(label);
                    }else if(obj instanceof Integer){
                         jxl.write.Number number = new jxl.write.Number(j+1,i+1,(Integer)obj,contentFormat);
                         sheet.addCell(number);
                    }else if(obj instanceof Double){
                            jxl.write.Number number = new jxl.write.Number(j+1,i+1,(Double)obj,contentFormat);
                            sheet.addCell(number);
                    }else if(obj instanceof Date){
                        String date = new SimpleDateFormat("yyyy-MM-dd").format((Date)obj);
                        jxl.write.Label label = new jxl.write.Label(j+1,i+1,date,contentFormat);
                        sheet.addCell(label);
                    }else{
                        jxl.write.Label label = new jxl.write.Label(j+1,i+1,"",contentFormat);
                        sheet.addCell(label);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 设置标题
     * @param sheet
     */
    public void setTitle(WritableSheet sheet){
        
        try {
            jxl.write.WritableCellFormat titleFormat = getStyle(true);//获取样式
            sheet.setColumnView(0,4);
            jxl.write.Label serialNum = new jxl.write.Label(0,0,"序号",titleFormat);
            sheet.addCell(serialNum);
            for (int i = 0; i < columns.size(); i++) {
                sheet.setColumnView(i+1,Integer.parseInt(columns.get(i)[2]));
                jxl.write.Label label = new jxl.write.Label(i+1,0,columns.get(i)[0],titleFormat);
                sheet.addCell(label);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 获取样式
     * @param isTitle
     * @return
     */
    public jxl.write.WritableCellFormat getStyle(boolean isTitle){
        int fontSize = 8;
        if(isTitle){
            fontSize = 14;
        }
        WritableFont titleFont = new WritableFont(WritableFont.ARIAL, fontSize,
                WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
                Colour.BLACK);
        jxl.write.WritableCellFormat wcfFHead = new jxl.write.WritableCellFormat(
                titleFont);
          try {
            wcfFHead.setAlignment(Alignment.CENTRE);
            wcfFHead.setVerticalAlignment(VerticalAlignment.CENTRE);
            if(isTitle){
                wcfFHead.setBackground(Colour.GRAY_25);
            }
            wcfFHead.setBorder(Border.ALL, BorderLineStyle.THIN);
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return wcfFHead;
    }
    
    public static void main(String[] args) {
    }
}

 

posted on 2014-02-26 19:14  定数  阅读(200)  评论(0)    收藏  举报

导航