创建Excel报表(传入Map对象)
来源:互联网 发布:淘宝装修海报 编辑:程序博客网 时间:2024/04/29 19:41
-------------------------------------------------------------java代码(可以直接copy使用)------------------------------------------------------package com.biz.comm;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import jxl.Workbook;
import jxl.write.WritableFont;
/**
* 生成Excel报表(通用方法)
*
* @author amoretto
*
*/
public class ExcelModel {
public ExcelModel() {
}
public String expordExcel(OutputStream os, Map list, String title,
String[][] stat) throws Exception {
jxl.write.WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件
String tmptitle = title; // 标题title
jxl.write.WritableSheet wsheet = wbook.createSheet("第一页", 0); // sheet名称
jxl.write.WritableFont wfont = new jxl.write.WritableFont(
WritableFont.ARIAL, 14, WritableFont.BOLD, false,
jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(
wfont);
wcfFC.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
wcfFC.setAlignment(jxl.format.Alignment.CENTRE);
wcfFC.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
jxl.write.Label wlabel1;
if (tmptitle != null && !"".equals(tmptitle.trim())) {
wlabel1 = new jxl.write.Label(0, 0, tmptitle, wcfFC);
wsheet.addCell(wlabel1);
wsheet.mergeCells(0, 0, stat.length - 1, 0);// 设置标题的长度和起始位置(1第几列开始(2第几行开始(3占有几列
}
wsheet.setRowView(0, 600);// 设置第1行高度
wsheet.setRowView(1, 400);// 设置第2行高度
for (int j = 0; j < stat.length; j++) { // 设置每个字段的大小 excel字段从0开始
wsheet.setColumnView(j, 20);
}
wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 12,
WritableFont.BOLD, false,
jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
wcfFC = new jxl.write.WritableCellFormat(wfont);
wcfFC.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
wcfFC.setAlignment(jxl.format.Alignment.CENTRE);
wcfFC.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
jxl.write.Label wlabel;
for (int j = 0; j < stat.length; j++) { // 记录所有字段
if (tmptitle == null || "".equals(tmptitle.trim())) {
wlabel = new jxl.write.Label(j, 0, stat[j][0], wcfFC);
} else {
wlabel = new jxl.write.Label(j, 1, stat[j][0], wcfFC);
}
wsheet.addCell(wlabel);
}
wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 11,
WritableFont.NO_BOLD, false,
jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
wcfFC = new jxl.write.WritableCellFormat(wfont);
wcfFC.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
int i = 2;
if (tmptitle == null || "".equals(tmptitle.trim())) {
i = 1;
} else {
i = 2;
}
Set set = list.keySet();
for (Iterator iter = set.iterator(); iter.hasNext();) { // 赋值过程
Object obj = (Object) iter.next();
Map map = (Map) list.get(obj);
for (int j = 0; j < stat.length; j++) {
wlabel = new jxl.write.Label(j, i, map.get(stat[j][1])
.toString()
+ "", wcfFC);
wsheet.addCell(wlabel);
}
++i;
}
wbook.write(); // 写入文件
wbook.close();
if (os != null) {
os.flush();
}
os.close();
return "success";
}
public String expordExcel2(OutputStream os, List list, String title,
String[] stat) throws Exception {
jxl.write.WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件
String tmptitle = title; // 标题title
jxl.write.WritableSheet wsheet = wbook.createSheet("第一页", 0); // sheet名称
jxl.write.WritableFont wfont = new jxl.write.WritableFont(
WritableFont.ARIAL, 14, WritableFont.BOLD, false,
jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(
wfont);
wcfFC.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
wcfFC.setAlignment(jxl.format.Alignment.CENTRE);
wcfFC.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
jxl.write.Label wlabel1;
wlabel1 = new jxl.write.Label(0, 0, tmptitle, wcfFC);
wsheet.addCell(wlabel1);
wsheet.mergeCells(0, 0, list.size(), 0);// 设置标题的长度和起始位置(1第几列开始(2第几行开始(3占有几列
wsheet.setRowView(0, 600);// 设置第1行高度
wsheet.setRowView(1, 400);// 设置第2行高度
// for (int j = 0; j <stat.length; j++) { // 设置每个字段的大小 excel字段从0开始
// wsheet.setColumnView(j, 20);
// }
wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 30,
WritableFont.BOLD, false,
jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
wcfFC = new jxl.write.WritableCellFormat(wfont);
wcfFC.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
wcfFC.setAlignment(jxl.format.Alignment.CENTRE);
wcfFC.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
// wcfFC.colspan
jxl.write.Label wlabel;
// for (int j = 0; j < stat.length; j++) { // 记录所有字段
// wlabel = new jxl.write.Label(j, 1, stat[j], wcfFC);
// wsheet.addCell(wlabel);
// }
wcfFC = new jxl.write.WritableCellFormat();
wcfFC.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
for (int i = 1; i < stat.length + 1; i++) {
if (stat[i - 1] != null) {
wlabel = new jxl.write.Label(0, i, stat[i - 1] + "", wcfFC); // j表示第几列,i表示第几个数
} else {
wlabel = new jxl.write.Label(0, i, "" + "", wcfFC); // j表示第几列,i表示第几个数
}
wsheet.addCell(wlabel);
}
int j = 1;
String temp = "";
// int counter = 1;
int cal = 1;
int counter = 0;
for (Iterator iter = list.iterator(); iter.hasNext();) { // 赋值过程
Object[] obj = (Object[]) iter.next();
for (int i = 1; i < obj.length + 1; i++) {
if (i == 1) {
if ("".equals(temp)) {
temp = "" + obj[0];
counter++;
} else {
if (temp.equals("" + obj[0])) {
counter++;
} else {
wsheet.mergeCells(cal, 1, cal + counter - 1, 1);
cal = cal + counter;
temp = obj[0] + "";
counter = 1;
}
}
}
if (obj[i - 1] != null) {
wlabel = new jxl.write.Label(j, i, obj[i - 1] + "", wcfFC); // j表示第几列,i表示第几个数
} else {
wlabel = new jxl.write.Label(j, i, "" + "", wcfFC); // j表示第几列,i表示第几个数
}
wsheet.addCell(wlabel);
}
++j;
}
// wsheet.mergeCells(1, 1, 2, 1);
wbook.write(); // 写入文件
wbook.close();
if (os != null) {
os.flush();
}
os.close();
return "success";
}
}
----------------------------------------------------------jsp代码(需要修改相应属性)------------------------------------------------------------<%@ page language="java" pageEncoding="gbk"%>
<jsp:directive.page import="java.util.Map" />
<jsp:directive.page import="com.biz.comm.ExcelModel" />
<%@ taglib uri="/WEB-INF/taglib/c.tld" prefix="c"%>
<%@taglib uri="/WEB-INF/taglib/DataGridTag.tld" prefix="m"%>
<%@ page import="java.util.*,java.text.SimpleDateFormat"%>
<%
response.setContentType("application/vnd.ms-excel;charset=GBK");
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
Date date2 = new Date();
String date1 = formatter.format(date2);
response.setHeader("Content-Disposition",
"attachment;filename=ClearingBath" + date1 + ".xls");
%>
<%
out.clear();
out = pageContext.pushBody();
Map map = (Map) request.getAttribute("list");
ExcelModel em = new ExcelModel();
String[][] stat = new String[][] { { "中心流水号", "centerFlow" },
{ "交易日期", "tranDate" }, { "清算银行行号", "bankCode" },
{ "结算明细笔数", "cleanCount" }, { "清算结果", "retMsg" },
{ "备注", "remark" } };
em.expordExcel(response.getOutputStream(), map, "清算结果数据", stat);
%>
- 创建Excel报表(传入Map对象)
- poi 导出excel(传入map类型)
- VC创建Excel报表
- VC创建Excel报表
- delphi 控制 excel,创建报表
- quick 如何创建对象的传入参数
- Mybatis中更新数据时遍历传入的Map对象
- 使用传入的Model对象创建ModelAndView对象
- 还有:用VB创建Excel报表
- JavaScript构造创建Map对象
- 手工创建请求对象并传入至任意SAP系统
- 传入Java对象 自动创建动态表 并录入数据
- 传入Java对象 自动创建动态表 并录入数据
- 传入Java对象 自动创建动态表 并录入数据
- 传入Map返回实体
- 如何用Map对象创建Set对象
- 【水晶报表内功心法】--信手拈来,掌控对象 之 多值参数传入
- 水晶报表10传入参数
- 各种数据库JDBC驱动加载注册方式以及建立连接时的URL字符串
- 禁止对话框窗口的改变和实现窗口的拉伸
- vc++之cdialog
- 关于大学生的减肥与锻炼
- 堆 栈 区别
- 创建Excel报表(传入Map对象)
- 关于内存分配 realloc
- 保护色
- 毫不动摇
- Android 申请WakeLock
- C#调用存储过程获取记录集
- SQL*Loader控制文件
- 用友软件低价服务
- 快要毕业了!百般滋味......