package com.common.excel;
import com.common.excel.exception.WriteExcelException;
import jxl.Workbook; import jxl.WorkbookSettings;
import jxl.format.Alignment;
import jxl.write.DateFormats; import jxl.write.DateTime; import jxl.write.Label; import jxl.write.Number; import jxl.write.WritableCellFormat; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook;
import java.io.File;
import java.sql.ResultSet;
import java.util.ArrayList; import java.util.Date;
//import java.sql.ResultSetMetaData; import java.util.List; import java.util.Locale;
/** * @author ccj */ public class Write { /** *防止外部构造 */ private Write() { }
/** * 取得WriteExcel实例 * @return */ public static Write getInstance() { return new Write(); } /** * 写一个空的Excel * @param sheetName * @param realFilePathAndName 文件名的真实路径 * @throws WriteExcelException */ public void write(String sheetName, String realFilePathAndName) throws WriteExcelException { this.write(sheetName, new ArrayList(), 0, new ArrayList(), 1, realFilePathAndName); }
/** * 写Excel * @param sheetName sheet名,如果没有为NULL * @param titleList excel标题的集合 * @param contentList excel内容的集合 * @param realFilePathAndName 文件名的真实路径 * @throws WriteExcelException */ public void write(String sheetName, List titleList, List contentList, String realFilePathAndName) throws WriteExcelException { this.write(sheetName, titleList, 0, contentList, 1, realFilePathAndName); }
/** * 写Excel Java免费学习 Java自学网 http://www.javalearns.com * @param sheetName sheet名,如果没有为NULL * @param titleList excel标题的集合 * @param titleRowNum 标题开始行,0为第一行 * @param contentList excel内容的集合 * @param contentStartRowNum 内容开始行,0为第一行 * @param realFilePathAndName 文件名的真实路径 * @throws WriteExcelException */ public void write(String sheetName, List titleList, int titleRowNum, List contentList, int contentStartRowNum, String realFilePathAndName) throws WriteExcelException { WorkbookSettings ws = new WorkbookSettings(); ws.setLocale(new Locale("zh", "CN"));
try { WritableWorkbook workbook = Workbook.createWorkbook(new File( realFilePathAndName), ws); WritableSheet sheet = null;
if (sheetName != null) { sheet = workbook.createSheet(sheetName, 0); } else { sheet = workbook.createSheet("sheet", 0); }
//验证行数 if (titleRowNum < 0) { titleRowNum = 0; }
if (contentStartRowNum <= titleRowNum) { contentStartRowNum = titleRowNum + 1; }
//验证标题与内容 if (titleList == null) { titleList = new ArrayList(); }
if (contentList == null) { contentList = new ArrayList(); }
WritableCellFormat wcf = new WritableCellFormat(); wcf.setAlignment(Alignment.CENTRE);
//循环生成标题 for (int i = 0; i < titleList.size(); i++) { Label label = new Label(i, titleRowNum, String.valueOf(titleList.get(i)), wcf); sheet.addCell(label); }
for (int ii = 0; ii < contentList.size(); ii++) { //循环生成内容 List list = (List) contentList.get(ii);
for (int i = 0; i < list.size(); i++) { Object value = list.get(i);
if (value instanceof Integer) { Integer valueInt = (Integer) value; Number n = new Number(i, contentStartRowNum, valueInt.intValue()); sheet.addCell(n); } else if (value instanceof Double) { Double valueDouble = (Double) value; Number n = new Number(contentStartRowNum, i, valueDouble.doubleValue()); sheet.addCell(n); } else if (value instanceof Boolean) { Boolean valueBoolean = (Boolean) value; jxl.write.Boolean b = new jxl.write.Boolean(contentStartRowNum, i, valueBoolean.booleanValue()); sheet.addCell(b); } else if (value instanceof Date) { Date valueDate = (Date) value; WritableCellFormat cf1 = new WritableCellFormat(DateFormats.FORMAT9); DateTime dt = new DateTime(i, contentStartRowNum, valueDate, cf1); sheet.addCell(dt); } else { Label l = new Label(i, contentStartRowNum, String.valueOf(value)); sheet.addCell(l); } }
contentStartRowNum++; }
workbook.write(); workbook.close(); } catch (Exception e) { throw new WriteExcelException(e.toString()); } }
/** * 写Excel * @param sheetName sheet名,如果没有为NULL * @param titleList excel标题的集合 * @param contentResultSet excel内容的数据库集合 * @param realFilePathAndName 文件名的真实路径 * @throws WriteExcelException */ public void write(String sheetName, List titleList, ResultSet contentResultSet, String realFilePathAndName) throws WriteExcelException { //try{ // ResultSetMetaData r = contentResultSet.getMetaData(); // r.getColumnCount(); //}catch(Exception e){ //} // }
/** * 写Excel * @param sheetName sheet名,如果没有为NULL * @param titleList excel标题的集合 * @param titleRowNum 标题开始行,0为第一行 * @param contentResultSet excel内容的数据库集合 * @param contentStartRowNum 内容开始行,0为第一行 * @param realFilePathAndName 文件名的真实路径 * @throws WriteExcelException */ public void write(String sheetName, List titleList, int titleRowNum, ResultSet contentResultSet, int contentStartRowNum, String realFilePathAndName) throws WriteExcelException { }
}