
看看下面的代码,应该对你有帮助:
<%@ page import="netExcelBean" %>
<%@ page import="javaio" %>
<%@ page import="netcreateExcelCreateExcelST" %>
<%@ page import="javautil" %>
<%@ page import="comseipherdwrafterServiceDWRFinanceDWR" %>
<%@ page import="netTimeUtil" %>
<%@ page import="netNumberUtil" %>
<%@ page import="comseipherpojoafterServiceDetachCharge" %>
<%@ page import="comseipherpojosystemSetSupplyTrader" %>
<%@ page import="comseipherpojoafterServiceFinance" %>
<%@ page import="comseipherdwrafterServiceDWRAbondDWR" %>
<%@ page import="comseipherpojoafterServiceAbond" %>
<%@ page contentType="text/html;charset=utf-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<%
String supplyName = requestgetParameter("supplyName1");
String usersName = requestgetParameter("usersName1");
String startTimeA = requestgetParameter("startTimeA1");
String endTimeA = requestgetParameter("endTimeA1");
String pageNum = requestgetParameter("pageNum1")toString();
ExcelBean excelBean = new ExcelBean();
CreateExcelST createExcel = new CreateExcelST();
excelBeansetPath("/twoxls");
List dataResult = new ArrayList();
List titleList = new ArrayList();
if (null == pageNum) return;
if (pageNumequals("")) return;
AbondDWR abondDWR = new AbondDWR();
Map form = new HashMap();
formput("supplyName", supplyName);
formput("usersName", usersName);
formput("startTimeA", startTimeA);
formput("endTimeA", endTimeA);
formput("pageNum", pageNum);
List result = abondDWRselectAllByRows(LongparseLong(pageNum), "1", form);
List list = (ArrayList) resultget(0);
titleListadd("供应商名称");
titleListadd("供应商编码");
titleListadd("起始时间");
titleListadd("截止时间");
titleListadd("开票金额");
titleListadd(" *** 作时间");
titleListadd(" *** 作人");
titleListadd("备注");
List dataList;
for (Object o : list) {
dataList = new ArrayList();
Abond abond = (Abond) o;
dataListadd(abondgetSupplyTrader()getName());
dataListadd(abondgetSupplyTrader()getCode());
if (null != abondgetStartTime()) {
String timeA = TimeUtilgetYYYY_MM_DD(abondgetStartTime());
if (null != timeA && !timeAequals("") && !timeAequals("1970-01-01")) {
dataListadd(timeA);
} else {
dataListadd("");
}
} else dataListadd("");
if (null != abondgetEndTime()) {
String timeA = TimeUtilgetYYYY_MM_DD(abondgetEndTime());
if (null != timeA && !timeAequals("") && !timeAequals("1970-01-01")) {
dataListadd(timeA);
} else {
dataListadd("");
}
} else dataListadd("");
dataListadd(abondgetMoney() + "");
if (null != abondgetOperateTime()) {
String timeA = TimeUtilgetYYYYMMDDHHMMSSLiuPC(abondgetOperateTime());
if (null != timeA && !timeAequals("") && !timeAequals("1970-01-01")) {
dataListadd(timeA);
} else {
dataListadd("");
}
} else dataListadd("");
dataListadd(abondgetUsersManage()getName());
dataListadd(abondgetMessages());
dataResultadd(dataList);
}
int[] width = {100, 40, 40, 40, 40, 40, 40, 40};
excelBeansetReportName(startTimeA + "到" + endTimeA + "开票信息查询");
excelBeansetDataList(dataResult);
excelBeansetSheetName(startTimeA + "到" + endTimeA + "开票信息查询");
excelBeansetTitleList(titleList);
excelBeansetColumnWidth(width);
excelBeansetFlag(false);
try {
createExcelcreateExcelFile(excelBean);
} catch (Exception e) {
eprintStackTrace();
}
try {
responsesetContentType("application/x-msdownload");
responseaddHeader("Content-Disposition", "attachment;filename=" + "kaipiaoxinxi" + "xls");
FileInputStream finput = new FileInputStream(excelBeangetPath());
OutputStream output = responsegetOutputStream();
BufferedInputStream buffin = new BufferedInputStream(finput);
BufferedOutputStream buffout = new BufferedOutputStream(output);
outclear();
out = pageContextpushBody();
byte[] buffer = new byte[4096];
int count = 0;
while ((count = buffinread(buffer, 0, bufferlength)) > 0) {
buffoutwrite(buffer, 0, count);
}
buffinclose();
buffoutclose();
finputclose();
outputclose();
} catch (Exception e) {
eprintStackTrace();
} finally {
File srcExcel = new File(excelBeangetPath());
srcExceldelete();
}
%>
</body>
</html>
=============CreateExcelSTjava======================
package netcreateExcel;
import orgapachecommonsloggingLog;
import orgapachecommonsloggingLogFactory;
import orgapachepoihssfusermodel;
import orgapachepoihssfutilRegion;
import orgapachepoihssfutilHSSFColor;
import javautilList;
import javaioFileOutputStream;
import netExcelBean;
/
User: marlboro Date: 2008-2-15 Time: 10:15:38
@author Marlboro
@mailto marlboro027@gmailcom
/
public class CreateExcelST {
private Log log = LogFactorygetFactory()getInstance(thisgetClass()getName());
@SuppressWarnings("unchecked")
public void createExcelFile(ExcelBean excelBean) throws Exception {
// 创建工作薄
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wbcreateSheet(excelBeangetSheetName());
// 打印页面设置
HSSFPrintSetup ps = sheetgetPrintSetup();
sheetsetMargin(HSSFSheetBottomMargin, 05);// 页边距
sheetsetMargin(HSSFSheetLeftMargin, 01);
sheetsetMargin(HSSFSheetRightMargin, 01);
sheetsetMargin(HSSFSheetTopMargin, 05);
pssetLandscape(true); // 打印方向,true:横向,false:纵向
pssetPaperSize(HSSFPrintSetupA4_PAPERSIZE); // 纸张
// 设置列宽
thissetColumnWidth(sheet, excelBeangetColumnWidth());
// 标题栏设置字体
HSSFFont cellFontReport = wbcreateFont();
cellFontReportsetFontHeightInPoints((short) 16); // 字号
cellFontReportsetBoldweight(HSSFFontU_SINGLE); // 加粗
cellFontReportsetFontName("Courier New");
// 字段栏设置字体
HSSFFont cellFontColumn = wbcreateFont();
cellFontColumnsetFontHeightInPoints((short) 12); // 字号
cellFontColumnsetBoldweight(HSSFFontU_SINGLE); // 加粗
cellFontColumnsetFontName("Courier New");
cellFontColumnsetColor(HSSFFontSS_NONE);
// 设置字体
HSSFFont cellFont = wbcreateFont();
cellFontsetFontHeightInPoints((short) 10); // 字号
cellFontsetBoldweight(HSSFFontU_SINGLE); // 加粗
cellFontsetFontName("Courier New");
//自定义颜色
HSSFPalette palette = wbgetCustomPalette();
palettesetColorAtIndex(HSSFColorAQUAindex, (byte) 252, (byte) 254, (byte) 236);
// 设置标题栏单元格格式
HSSFCellStyle cellStyleReport = wbcreateCellStyle();
cellStyleReportsetFont(cellFontReport);
cellStyleReportsetAlignment(HSSFCellStyleALIGN_CENTER); // 左右居中
cellStyleReportsetVerticalAlignment(HSSFCellStyleVERTICAL_CENTER); // 上下居中
cellStyleReportsetBorderBottom(HSSFCellStyleBORDER_THIN); // 下边框
cellStyleReportsetBorderLeft(HSSFCellStyleBORDER_THIN); // 左边框
cellStyleReportsetBorderRight(HSSFCellStyleBORDER_THIN); // 右边框
cellStyleReportsetBorderTop(HSSFCellStyleBORDER_THIN); // 上边框
cellStyleReportsetWrapText(true);// 自动换行
cellStyleReportsetFillForegroundColor(HSSFColorAQUAindex);
cellStyleReportsetFillPattern(HSSFCellStyleSOLID_FOREGROUND);
// 设置标题栏单元格格式
HSSFCellStyle cellStyleColumn = wbcreateCellStyle();
cellStyleColumnsetFont(cellFontColumn);
cellStyleColumnsetAlignment(HSSFCellStyleALIGN_CENTER); // 左右居中
cellStyleColumnsetVerticalAlignment(HSSFCellStyleVERTICAL_CENTER); // 上下居中
cellStyleColumnsetBorderBottom(HSSFCellStyleBORDER_THIN); // 下边框
cellStyleColumnsetBorderLeft(HSSFCellStyleBORDER_THIN); // 左边框
cellStyleColumnsetBorderRight(HSSFCellStyleBORDER_THIN); // 右边框
cellStyleColumnsetBorderTop(HSSFCellStyleBORDER_THIN); // 上边框
cellStyleColumnsetWrapText(true);// 自动换行
cellStyleColumnsetFillForegroundColor(HSSFColorGREY_25_PERCENTindex);
cellStyleColumnsetFillPattern(HSSFCellStyleSOLID_FOREGROUND);
// 设置单元格格式
HSSFCellStyle cellStyle = wbcreateCellStyle();
cellStylesetFont(cellFont);
cellStylesetAlignment(HSSFCellStyleALIGN_CENTER); // 左右居中
cellStylesetVerticalAlignment(HSSFCellStyleVERTICAL_CENTER); // 上下居中
cellStylesetBorderBottom(HSSFCellStyleBORDER_THIN); // 下边框
cellStylesetBorderLeft(HSSFCellStyleBORDER_THIN); // 左边框
cellStylesetBorderRight(HSSFCellStyleBORDER_THIN); // 右边框
cellStylesetBorderTop(HSSFCellStyleBORDER_THIN); // 上边框
cellStylesetWrapText(true);// 自动换行
List dataList = excelBeangetDataList();
if (null != dataList) {
// 报表的标题
List titleList = excelBeangetTitleList();
// 创建行 设置报表名称
HSSFRow rowReportName = sheetcreateRow(0);
HSSFCell cellReportName = rowReportNamecreateCell((short) 0);
sheetaddMergedRegion(new Region(0, (short) 0, 0, (short) (titleListsize() - 1)));
HSSFRichTextString reportString = new HSSFRichTextString(excelBeangetReportName());
cellReportNamesetCellValue(reportString);
cellReportNamesetCellStyle(cellStyleReport);
HSSFCell endReportName = rowReportNamecreateCell((short) (titleListsize() - 1));
endReportNamesetCellStyle(cellStyleReport);
// 创建行
HSSFRow rowTitle = sheetcreateRow(1);
for (int i = 0; i < titleListsize(); i++) {
String s_title = (String) titleListget(i);
HSSFCell cellx_y = rowTitlecreateCell((short) i);
HSSFRichTextString hssfRichTextString = new HSSFRichTextString(s_title);
// 单元格内容
cellx_ysetCellValue(hssfRichTextString);
// 单元格格式
cellx_ysetCellStyle(cellStyleColumn);
}
// 报表数据
for (int i = 0; i < dataListsize(); i++) {
HSSFRow row = sheetcreateRow(i + 2);
List list_row = (List) dataListget(i);
for (int j = 0; j < list_rowsize(); j++) {
String strtmp = (String) list_rowget(j);
// String strtmp = list_rowget(j)toString();
if (" "equals(strtmp)) {
strtmp = " ";
}
HSSFCell cell = rowcreateCell((short) j);
HSSFRichTextString hssfRichTextString = new HSSFRichTextString(strtmp);
cellsetCellValue(hssfRichTextString);
cellsetCellStyle(cellStyle);
}
}
}
// 另外一个标题
List otherTitleList = excelBeangetOtherTitleList();
if (otherTitleList != null) {
// 创建行
HSSFRow otherRowTitle = sheetcreateRow(dataListsize() + 2);
for (int i = 0; i < otherTitleListsize(); i++) {
String s_title = (String) otherTitleListget(i);
HSSFCell cellx_y = otherRowTitlecreateCell((short) i);
HSSFRichTextString hssfRichTextString = new HSSFRichTextString(s_title);
cellx_ysetCellValue(hssfRichTextString); // 单元格内容
cellx_ysetCellStyle(cellStyle); // 单元格格式
}
// 另外的数据集
List otherDataList = excelBeangetOtherDataList();
// 报表数据
for (int i = 0; i < otherDataListsize(); i++) {
HSSFRow row = sheetcreateRow(dataListsize() + 3 + i);
List list_row = (List) otherDataListget(i);
for (int j = 0; j < list_rowsize(); j++) {
String strtmp = (String) list_rowget(j);
if (" "equals(strtmp)) {
strtmp = " ";
}
HSSFCell cell = rowcreateCell((short) j);
HSSFRichTextString hssfRichTextString = new HSSFRichTextString(strtmp);
cellsetCellValue(hssfRichTextString);
cellsetCellStyle(cellStyle);
}
}
}
try {
FileOutputStream fileOut = new FileOutputStream(excelBeangetPath());
logdebug("===FilePath>>>>>>>>>>>>>>>>>===>>>>>>" + excelBeangetPath());
wbwrite(fileOut);
fileOutclose();
} catch (Exception e) {
throw new Exception("文件已经打开,请关闭后再生成");
}
}
public void setColumnWidth(HSSFSheet sheet, int[] width) {
for (int i = 0; i < widthlength; i++) {
sheetsetColumnWidth((short) i, (short) (width[i] 100));
}
}
}
1、先封装好excel的java帮助类
2、点击jsp的导出按钮时,用同步请求带上参数调用后台方法
3、解析参数从数据库获取对于的表格数据
4、调用excel的java帮助类导出excel
帮助类:
/
String[] Title={"机构ID","会员编号","类别","名称","省ID","省名称","城市ID","城市名称","详细地址","联系人","性别","联系手机","联系电话","传真","邮箱","QQ","生日","积分","客户等级","现金账户余额","结算方式","客户类型","购买次数","购买支数","创建人ID","创建人姓名","create_time","del","STS","备注","负责人ID","负责人姓名","审核标识","审核人ID ","审核人姓名","审核日期","分配人ID","分配人姓名","分配日期","修改人ID","修改人姓名 ","修改时间"};
List<Object> li=new ArrayList<Object>();
liadd(signatureFile);
ExportExcelTool excel=new ExportExcelTool();
excelexportExcel("客户资料信息xls",Title, li,response);
@param fileName EXCEL文件名称
@param listTitle EXCEL文件第一行列标题集合
@param listContent EXCEL文件正文数据集合
@return
/
public final static String exportExcel(String fileName,String[] Title, List<Object> listContent ,HttpServletResponse response) {
String result="系统提示:Excel文件导出成功!";
// 以下开始输出到EXCEL
try {
//定义输出流,以便打开保存对话框______________________begin
OutputStream os = responsegetOutputStream();// 取得输出流
responsereset();// 清空输出流
responsesetHeader("Content-disposition", "attachment; filename="+ new String(fileNamegetBytes("GB2312"),"ISO8859-1"));
// 设定输出文件头
responsesetContentType("application/msexcel");// 定义输出类型
//定义输出流,以便打开保存对话框_______________________end
/ 创建工作簿 /
WritableWorkbook workbook = WorkbookcreateWorkbook(os);
/ 创建工作表 /
WritableSheet sheet = workbookcreateSheet("Sheet1", 0);
/ 设置纵横打印(默认为纵打)、打印纸 /
jxlSheetSettings sheetset = sheetgetSettings();
sheetsetsetProtected(false);
/ 设置单元格字体 /
WritableFont NormalFont = new WritableFont(WritableFontARIAL, 10);
WritableFont BoldFont = new WritableFont(WritableFontARIAL, 10,WritableFontBOLD);
/ 以下设置三种单元格样式,灵活备用 /
// 用于标题居中
WritableCellFormat wcf_center = new WritableCellFormat(BoldFont);
wcf_centersetBorder(BorderALL, BorderLineStyleTHIN); // 线条
wcf_centersetVerticalAlignment(VerticalAlignmentCENTRE); // 文字垂直对齐
wcf_centersetAlignment(AlignmentCENTRE); // 文字水平对齐
wcf_centersetWrap(false); // 文字是否换行
// 用于正文居左
WritableCellFormat wcf_left = new WritableCellFormat(NormalFont);
wcf_leftsetBorder(BorderNONE, BorderLineStyleTHIN); // 线条
wcf_leftsetVerticalAlignment(VerticalAlignmentCENTRE); // 文字垂直对齐
wcf_leftsetAlignment(AlignmentLEFT); // 文字水平对齐
wcf_leftsetWrap(false); // 文字是否换行
/ 以下是EXCEL开头大标题,暂时省略 /
//sheetmergeCells(0, 0, colWidth, 0);
//sheetaddCell(new Label(0, 0, "XX报表", wcf_center));
/ 以下是EXCEL第一行列标题 /
for (int i = 0; i < Titlelength; i++) {
sheetaddCell(new Label(i, 0,Title[i],wcf_center));
}
/ 以下是EXCEL正文数据 /
Field[] fields=null;
int i=1;
for(Object obj:listContent){
fields=objgetClass()getDeclaredFields();
int j=0;
for(Field v:fields){
vsetAccessible(true);
Object va=vget(obj);
if(va==null){
va="";
}
sheetaddCell(new Label(j, i,vatoString(),wcf_left));
j++;
}
i++;
}
/ 将以上缓存中的内容写到EXCEL文件中 /
workbookwrite();
/ 关闭文件 /
workbookclose();
} catch (Exception e) {
result="系统提示:Excel文件导出失败,原因:"+ etoString();
Systemoutprintln(result);
eprintStackTrace();
}
return result;
}
既然放在页面上,那你应该能取到整个table的html内容吧。
取到整个table的html后,你可以使用xstream将其解析为一个一个的td标记的javabean,然后使用poi或者jxl在servlet生成excel文件就可以了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)