Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright (c) 2013-2014 sagyf Yang. The Four Group.
   */
  
  package com.jfinal.ext.kit;
  
 
 import java.util.List;
 import java.util.Map;
 import java.util.Set;

.

Author(s):
sagyf yang
Version:
1.0 2014-02-12 21:47
Since:
JDK 1.6
 
 public class PoiKit {
 
 
     private static final int HEADER_ROW = 1;
     private static final int MAX_ROWS   = 65536;
 
     private String sheetName = "new sheet";
     private int    cellWidth = 8000;
     private int headerRow;
     private String[] headers = new String[]{};
     private       String[] columns;
     private final List<?>  data;
 
     public PoiKit(List<?> data) {
         this. = data;
     }
 
     public static PoiKit with(List<?> data) {
         return new PoiKit(data);
     }
 
     public HSSFWorkbook export() {
         Preconditions.checkNotNull("headers can not be null");
         Preconditions.checkNotNull("columns can not be null");
         Preconditions.checkArgument( >= 0, "cellWidth < 0");
         HSSFWorkbook wb = new HSSFWorkbook();
         HSSFSheet sheet = wb.createSheet();
         HSSFRow row;
         HSSFCell cell;
         if (. > 0) {
             row = sheet.createRow(0);
             if ( <= 0) {
                  = ;
             }
              = Math.min();
             for (int h = 0, lenH = .h < lenHh++) {
                 CellRangeAddress region = new CellRangeAddress(0, (shorth, (short - 1, (shorth);// 合并从第rowFrom行columnFrom列
                 sheet.addMergedRegion(region);// 到rowTo行columnTo的区域
                 // 得到所有区域
                 sheet.getNumMergedRegions();
                 if ( > 0) {
                     sheet.setColumnWidth(h);
                 }
                 cell = row.createCell(h);
                 cell.setCellValue([h]);
             }
         }
         if (.size() == 0) {
             return wb;
         }
         for (int i = 0, len = .size(); i < leni++) {
             row = sheet.createRow(i + );
             Object obj = .get(i);
             if (obj == null) {
                 continue;
             }
             if (obj instanceof Map) {
                 processAsMap(rowobj);
             } else if (obj instanceof Model) {
                 processAsModel(rowobj);
             } else if (obj instanceof Record) {
                 processAsRecord(rowobj);
             }
         }
         return wb;
     }
 
     @SuppressWarnings("unchecked")
     private static void processAsMap(String[] columnsHSSFRow rowObject obj) {
        HSSFCell cell;
        Map<StringObjectmap = (Map<StringObject>) obj;
        if (columns.length == 0) {// 未设置显示列,默认全部
            Set<Stringkeys = map.keySet();
            int columnIndex = 0;
            for (String key : keys) {
                cell = row.createCell(columnIndex);
                cell.setCellValue(map.get(key) + "");
                columnIndex++;
            }
        } else {
            for (int j = 0, lenJ = columns.lengthj < lenJj++) {
                cell = row.createCell(j);
                cell.setCellValue(map.get(columns[j]) + "");
            }
        }
    }
    private static void processAsModel(String[] columnsHSSFRow rowObject obj) {
        HSSFCell cell;
        Model<?> model = (Model<?>) obj;
        Set<Map.Entry<StringObject>> entries = model.getAttrsEntrySet();
        if (columns.length == 0) {// 未设置显示列,默认全部
            int columnIndex = 0;
            for (Map.Entry<StringObjectentry : entries) {
                cell = row.createCell(columnIndex);
                cell.setCellValue(entry.getValue() + "");
                columnIndex++;
            }
        } else {
            for (int j = 0, lenJ = columns.lengthj < lenJj++) {
                cell = row.createCell(j);
                cell.setCellValue(model.get(columns[j]) + "");
            }
        }
    }
    private static void processAsRecord(String[] columnsHSSFRow rowObject obj) {
        HSSFCell cell;
        Record record = (Recordobj;
        Map<StringObjectmap = record.getColumns();
        if (columns.length == 0) {// 未设置显示列,默认全部
            record.getColumns();
            Set<Stringkeys = map.keySet();
            int columnIndex = 0;
            for (String key : keys) {
                cell = row.createCell(columnIndex);
                cell.setCellValue(record.get(key) + "");
                columnIndex++;
            }
        } else {
            for (int j = 0, lenJ = columns.lengthj < lenJj++) {
                cell = row.createCell(j);
                cell.setCellValue(map.get(columns[j]) + "");
            }
        }
    }
    public PoiKit sheetName(String sheetName) {
        this. = sheetName;
        return this;
    }
    public PoiKit cellWidth(int cellWidth) {
        this. = cellWidth;
        return this;
    }
    public PoiKit headerRow(int headerRow) {
        this. = headerRow;
        return this;
    }
    public PoiKit headers(String[] headers) {
        this. = headers;
        return this;
    }
    public PoiKit columns(String[] columns) {
        this. = columns;
        return this;
    }
New to GrepCode? Check out our FAQ X