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 {
}
}
文章转载自 http://www.javalearns.com/Html/?1631.html
更多Java知识学习请访问 Java免费学习网 http://www.javalearns.com