如何将jsp页面表格另存为excel格式报表,或通过打印生成.xsl报表

如何将jsp页面表格另存为excel格式报表,或通过打印生成.xsl报表,第1张

看看下面的代码,应该对你有帮助:

<%@ 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文件就可以了。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/12180168.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存