给你个方法你自己看看用吧package com.hwsy.util;import java.io.OutputStream;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;import jxl.Workbook;
import jxl.write.WritableFont;public class Excel {
/**
 * 从数据库读数据,写入Excel
 * @param os 数据流,如果是写本地文件的话,可以是FileOutputStream;
 *    如果是写Web下载的话,可以是ServletOupputStream
 * @param title Excel工作簿的标题,如果不用的话,可以写null或者""
 * @param rs 数据结果集
 *    value,目前只能对应Column对象
 * @throws Exception 方法内的父类异常有SQLException和IOException
 */
public static void export(OutputStream os, String title, ResultSet rs)
throws Exception { jxl.write.WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件
jxl.write.WritableSheet wsheet = wbook.createSheet("第一页", 0); // sheet名称
jxl.write.WritableFont wfont = null; // 字体
jxl.write.WritableCellFormat wcfFC = null; // 字体格式
jxl.write.Label wlabel = null; // Excel表格的Cell // 设置excel标题字体
wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 16,
WritableFont.BOLD, false,
jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
wcfFC = new jxl.write.WritableCellFormat(wfont); // 添加excel标题
jxl.write.Label wlabel1 = new jxl.write.Label(5, 0, title, wcfFC);
wsheet.addCell(wlabel1); // 设置列名字体
// 如果有标题的话,要设置一下偏移
int offset = 1;
if (title == null || title.trim().equals(""))
offset = 0;
else {
wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 14,
WritableFont.BOLD, false,
jxl.format.UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK);
wcfFC = new jxl.write.WritableCellFormat(wfont);
}
/**
 * 因本数据列明是汉字可直接写入列名
 */
//创建Excel的列名
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
for (int i = 1; i <= count; i++) {
String name = rsmd.getColumnName(i);
wlabel = new jxl.write.Label(i - 1, offset, name);
wsheet.addCell(wlabel);
} // 设置正文字体
wfont = new jxl.write.WritableFont(WritableFont.TIMES, 14,
WritableFont.BOLD, false,
jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
wcfFC = new jxl.write.WritableCellFormat(wfont); //往Excel输出数据
/**
 * 修改往Excel输出数据
 * 2008-3-31
 * lgs
 */
int rowIndex = 1 + offset;
while (rs.next()) {
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
String value = rs.getString(i);
if (!"".equalsIgnoreCase(value) || value != null) {
if (util.isNum(value)) {
value = util.formatDoubleToMoney(Double
.parseDouble(value));
}
}
wlabel = new jxl.write.Label(i - 1, rowIndex, value);
wsheet.addCell(wlabel);
}
rowIndex++;
}
wbook.write(); // 写入文件
wbook.close();//关闭文件
os.flush();
os.close();
} /**
 * 从数据库读数据,写入Excel
 * @param os 数据流,如果是写本地文件的话,可以是FileOutputStream;
 *    如果是写Web下载的话,可以是ServletOupputStream
 * @param title Excel工作簿的标题,如果不用的话,可以写null或者""
 * @param rs 数据结果集
 * @param map 数据结果集对应Excel表列名映射:key对应数据结果集的列名,必须是大写;
 *    value,目前只能对应Column对象
 * @throws Exception 方法内的父类异常有SQLException和IOException
 */
public static void export(OutputStream os, String title, ResultSet rs,
Map map) throws Exception { jxl.write.WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件
jxl.write.WritableSheet wsheet = wbook.createSheet("第一页", 0); // sheet名称
jxl.write.WritableFont wfont = null; // 字体
jxl.write.WritableCellFormat wcfFC = null; // 字体格式
jxl.write.Label wlabel = null; // Excel表格的Cell // 设置excel标题字体
wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 16,
WritableFont.BOLD, false,
jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
wcfFC = new jxl.write.WritableCellFormat(wfont); // 添加excel标题
jxl.write.Label wlabel1 = new jxl.write.Label(5, 0, title, wcfFC);
wsheet.addCell(wlabel1); // 设置列名字体
// 如果有标题的话,要设置一下偏移
int offset = 1;
if (title == null || title.trim().equals(""))
offset = 0;
else {
wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 14,
WritableFont.BOLD, false,
jxl.format.UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK);
wcfFC = new jxl.write.WritableCellFormat(wfont);
}
//根据原数据和map来创建Excel的列名
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
for (int i = 1; i <= count; i++) {
String name = rsmd.getColumnName(i).toUpperCase();
if (map.containsKey(name)) {
Column col = (Column) map.get(name);
wlabel = new jxl.write.Label(col.getIndex(), offset, col
.getDisplayName());
wsheet.addCell(wlabel);
}
} // 设置正文字体
wfont = new jxl.write.WritableFont(WritableFont.TIMES, 14,
WritableFont.BOLD, false,
jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
wcfFC = new jxl.write.WritableCellFormat(wfont); //往Excel输出数据
int rowIndex = 1 + offset;
Collection array = map.values();
while (rs.next()) {
Iterator it = array.iterator();
while (it.hasNext()) {
Column col = (Column) it.next();
String value = rs.getString(col.getMetaName());
if (!"".equalsIgnoreCase(value) || value != null) {
if (util.isNum(value)) {
value = util.formatDoubleToMoney(Double
.parseDouble(value));
}
}
wlabel = new jxl.write.Label(col.getIndex(), rowIndex, value);
wsheet.addCell(wlabel);
}
rowIndex++;
}
wbook.write(); // 写入文件
wbook.close();
os.flush();
os.close();
}
}