Java生成Microsoft Excel 工作表及下载

package com.b;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

/**
* 生产Microsoft Excel 工作表及下载
*
* @author Administrator
*
*/
public class B extends HttpServlet {

/**
*
*/
private static final long serialVersionUID = -6607609196117844238L;

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);

}

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
queryRecResultDownload(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void queryRecResultDownload(HttpServletRequest request,
HttpServletResponse response) throws Exception {

List<Object[]> ecProd = new ArrayList<Object[]>();
ecProd.add(new Object[]{"20130711001", "20130711", "621011111100001", "1000.23", "1000.23","20130711", "232", "交易说明1", "失败描述1"});
ecProd.add(new Object[]{"20130711002", "20130711", "621011111100002", "1000.23", "1000.23","20130711", "232", "交易说明2", "失败描述2"});
ecProd.add(new Object[]{"20130711003", "20130711", "621011111100003", "1000.23", "1000.23","20130711", "232", "交易说明3", "失败描述3"});
ecProd.add(new Object[]{"20130711004", "20130711", "621011111100004", "1000.23", "1000.23","20130711", "232", "交易说明4", "失败描述4"});
ecProd.add(new Object[]{"20130711005", "20130711", "621011111100005", "1000.23", "1000.23","20130711", "232", "交易说明5", "失败描述5"});
ecProd.add(new Object[]{"20130711006", "20130711", "621011111100006", "1000.23", "1000.23","20130711", "232", "交易说明6", "失败描述6"});
ecProd.add(new Object[]{"20130711007", "20130711", "621011111100007", "1000.23", "1000.23","20130711", "232", "交易说明7", "失败描述7"});
ecProd.add(new Object[]{"20130711008", "20130711", "621011111100008", "1000.23", "1000.23","20130711", "232", "交易说明8", "失败描述8"});
ecProd.add(new Object[]{"20130711009", "20130711", "621011111100009", "1000.23", "1000.23","20130711", "232", "交易说明9", "失败描述9"});
ecProd.add(new Object[]{"20130711010", "20130711", "621011111100010", "1000.23", "1000.23","20130711", "232", "交易说明10", "失败描述10"});
/** 设置报表类型 */
response = DataExport.setHeadDataResponse(response, "联机交易对账差错报表");
WritableWorkbook workbook = Workbook.createWorkbook(response
.getOutputStream());
/** 设置Sheet */
WritableSheet sheet = workbook.createSheet(" 联机交易对账差错表", 0);
/** 标题 */
WritableCellFormat writableCellFormatTitle = WritableWorkbookUtils
.writableCellFormatTitle();
/** 行数 */
int count = 0;
/** 设置第一行为标题 */
sheet.addCell(new Label(0, count, " 联机交易对账差错报表",
writableCellFormatTitle));
/** 合并单元格 (列、行) */
sheet.mergeCells(0, count, 8, count);
count = count + 2;
/** 设置第三行为标题 */
sheet.addCell(new Label(0, count, " 对账系统:", WritableWorkbookUtils
.writableCellFormatTitleLabelRIGHT()));
/** 设置第三行为标题 */
sheet.addCell(new Label(1, count, " IC卡业务系统", WritableWorkbookUtils
.writableCellFormatTitleLabelLEFT()));
/** 合并单元格 (列、行) */
sheet.mergeCells(1, count, 2, count);
/** 设置第三行为标题 */
sheet.addCell(new Label(6, count, " 交易日期:", WritableWorkbookUtils
.writableCellFormatTitleLabelRIGHT()));
/** 设置第三行为标题 */
sheet.addCell(new Label(7, count, "2013-07-11", WritableWorkbookUtils
.writableCellFormatTitleLabelLEFT()));
/** 合并单元格 (列、行) */
sheet.mergeCells(7, count, 8, count);
if (ecProd != null && ecProd.size() > 0) {
WritableWorkbookUtils.makeListInCardType(sheet, count + 1,
new String[] { "渠道流水", "交易日期", "卡号", "交易金额", "核心对账金额",
"对账日期", "交易码", "交易说明", "失败描述" }, ecProd);
} else {
WritableWorkbookUtils.makeListInCardTypeNull(sheet, count + 1);
}
workbook.write();
workbook.close();
}

}
package com.b;


import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import jxl.NumberCell;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

public class WritableWorkbookUtils {
/**
* 设置单元格属性(标题)<br>
*
* @return
* @throws WriteException
*/
public static WritableCellFormat writableCellFormatTitle() throws WriteException {
/**
* 标题字体格式 <br>
* 第一个参数:字体类型 <br>
* 第二个参数:字体大小 <br>
* 第三个参数:字体加粗 <br>
* 第四个参数:字体加粗<br>
*
*/
WritableFont font1 = new WritableFont(WritableFont.createFont("宋体"), 12, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE);// NO下划线
/** 设置单元格属性 */
WritableCellFormat format1 = new WritableCellFormat(font1);
// /** 加边框 */
// format1.setBorder(Border.ALL, BorderLineStyle.THIN);
/** 设置居中 */
format1.setAlignment(Alignment.CENTRE);
// format1.setBackground(Colour.GRAY_25);
return format1;
}

public static WritableCellFormat writableCellFormatTitleLabel() throws WriteException {
/**
* 标题字体格式 <br>
* 第一个参数:字体类型 <br>
* 第二个参数:字体大小 <br>
* 第三个参数:字体加粗 <br>
* 第四个参数:字体加粗<br>
*
*/
WritableFont font1 = new WritableFont(WritableFont.createFont("宋体"), 9, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE);// NO下划线
/** 设置单元格属性 */
WritableCellFormat format1 = new WritableCellFormat(font1);
/** 加边框 */
format1.setBorder(Border.ALL, BorderLineStyle.THIN);
/** 设置居中 */
format1.setAlignment(Alignment.CENTRE);
// format1.setBackground(Colour.GRAY_25);
return format1;
}

public static WritableCellFormat writableCellFormatTitleLabelLEFT() throws WriteException {
/**
* 标题字体格式 <br>
* 第一个参数:字体类型 <br>
* 第二个参数:字体大小 <br>
* 第三个参数:字体加粗 <br>
* 第四个参数:字体加粗<br>
*
*/
WritableFont font1 = new WritableFont(WritableFont.createFont("宋体"), 9, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE);// NO下划线
/** 设置单元格属性 */
WritableCellFormat format1 = new WritableCellFormat(font1);
/** 设置居中 */
format1.setAlignment(Alignment.LEFT);
return format1;
}
public static WritableCellFormat writableCellFormatTitleLabelRIGHT() throws WriteException {
/**
* 标题字体格式 <br>
* 第一个参数:字体类型 <br>
* 第二个参数:字体大小 <br>
* 第三个参数:字体加粗 <br>
* 第四个参数:字体加粗<br>
*
*/
WritableFont font1 = new WritableFont(WritableFont.createFont("宋体"), 9, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE);// NO下划线
/** 设置单元格属性 */
WritableCellFormat format1 = new WritableCellFormat(font1);
/** 设置居中 */
format1.setAlignment(Alignment.RIGHT);
return format1;
}

/**
* 设置单元格属性(内容字体格式)
*
* @return
* @throws WriteException
*/
public static WritableCellFormat writableCellFormat() throws WriteException {
/**
* 标题字体格式 <br>
* 第一个参数:字体类型 <br>
* 第二个参数:字体大小 <br>
* 第三个参数:字体加粗 <br>
* 第四个参数:字体加粗<br>
*
*/
/** 内容字体格式 */
WritableFont font2 = new WritableFont(WritableFont.createFont("宋体"), 9, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE);// NO下划线
/** 设置单元格属性 */
WritableCellFormat format1 = new WritableCellFormat(font2);
/** 加边框 */
format1.setBorder(Border.ALL, BorderLineStyle.THIN);
/** 设置居中 */
// format1.setAlignment(Alignment.LEFT);
return format1;
}

public static void makeListInCardType(WritableSheet sheet, int count, String[] fileTitle, List<Object[]> listdata) throws IOException, RowsExceededException, WriteException {
/** 标题Label */
WritableCellFormat writableCellFormatTitleLabel = writableCellFormatTitleLabel();

/** 内容 */
WritableCellFormat writableCellFormat = writableCellFormat();
/**
* 设置列宽度 第一个参数:列数(从0开始) 第二个参数:列宽度
*/
for (int i = 0; i < fileTitle.length; i++) {
sheet.setColumnView(i, 18);

}
/**
* 添加列标题记录<br>
* 第一个参数:列数(从0开始)<br>
* 第二个参数:行数(从0开始) <br>
* 第三个参数:要填充的内容 <br>
* 第四个参数:样式 <br>
*/
for (int j = 0; j < fileTitle.length; j++) {
sheet.addCell(new Label(j, count + 1, fileTitle[j], writableCellFormatTitleLabel));
}
count = count + 2;
for (int k = 0; k < listdata.size(); k++) {
Object[] object = listdata.get(k);
if (object != null && object.length > 0) {
for (int h = 0; h < object.length; h++) {
sheet.addCell(new Label(h, k + count, object[h] != null && !"".equals(object[h]) ? String.valueOf(object[h]).trim() + "" : "", writableCellFormat));
}
}

}
}

public static void makeListInCardTypeNull(WritableSheet sheet,int count) throws IOException, RowsExceededException, WriteException {
WritableFont font1 = new WritableFont(WritableFont.createFont("宋体"), 9, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE);// NO下划线
/** 设置单元格属性 */
WritableCellFormat format1 = new WritableCellFormat(font1);
/** 设置居中 */
format1.setAlignment(Alignment.CENTRE);
/** 设置第一行为标题 */
sheet.addCell(new Label(0, count, " 无数据。。。", format1));
/** 合并单元格 (列、行) */
sheet.mergeCells(0, count, 8, count);



}

public static void makeListInCardType(OutputStream os, String[] fileTitle, List<Object[]> listdata, String Title) throws IOException, RowsExceededException, WriteException {

String fPath = "D:\\联机交易对账差错表.xls";
File file = new File(fPath);
// wb = Workbook.createWorkbook(file);

WritableWorkbook workbook = Workbook.createWorkbook(file);
/** 设置Sheet */
WritableSheet sheet = workbook.createSheet(" 联机交易对账差错表", 0);
/** 标题 */
WritableCellFormat writableCellFormatTitle = writableCellFormatTitle();
/** 标题Label */
WritableCellFormat writableCellFormatTitleLabel = writableCellFormatTitleLabel();

/** 内容 */
WritableCellFormat writableCellFormat = writableCellFormat();
/**
* 设置列宽度 第一个参数:列数(从0开始) 第二个参数:列宽度
*/
for (int i = 0; i < fileTitle.length; i++) {
sheet.setColumnView(i, 18);

}
/** 行数 */
int count = 0;
/** 设置第一行为标题 */
sheet.addCell(new Label(0, count, " 联机交易对账差错报表", writableCellFormatTitle));
/** 合并单元格 (列、行) */
sheet.mergeCells(0, count, 8, count);

/**
* 添加列标题记录<br>
* 第一个参数:列数(从0开始)<br>
* 第二个参数:行数(从0开始) <br>
* 第三个参数:要填充的内容 <br>
* 第四个参数:样式 <br>
*/
for (int j = 0; j < fileTitle.length; j++) {
sheet.addCell(new Label(j, count + 1, fileTitle[j], writableCellFormatTitleLabel));
}
count = count + 2;
for (int k = 0; k < listdata.size(); k++) {
Object[] object = listdata.get(k);
if (object != null && object.length > 0) {
for (int h = 0; h < object.length; h++) {

// sheet.addCell(new jxl.write.Number(h, k + count,2.33,writableCellFormat));

sheet.addCell(new Label(h, k + count, object[h] != null && !"".equals(object[h]) ? String.valueOf(object[h]).trim() + "" : "", writableCellFormat));
}
}

}
workbook.write();
workbook.close();
}





public static void makeListInCardTypeNew(WritableSheet sheet, int count, String[] fileTitle, List<Object[]> listdata) throws IOException, RowsExceededException, WriteException {
/** 标题Label */
WritableCellFormat writableCellFormatTitleLabel = writableCellFormatTitleLabel();

/** 内容 */
WritableCellFormat writableCellFormatNew = writableCellFormatNew();
/**
* 设置列宽度 第一个参数:列数(从0开始) 第二个参数:列宽度
*/
for (int i = 0; i < fileTitle.length; i++) {
sheet.setColumnView(i, 18);

}
/**
* 添加列标题记录<br>
* 第一个参数:列数(从0开始)<br>
* 第二个参数:行数(从0开始) <br>
* 第三个参数:要填充的内容 <br>
* 第四个参数:样式 <br>
*/
for (int j = 0; j < fileTitle.length; j++) {
sheet.addCell(new Label(j, count, fileTitle[j], writableCellFormatTitleLabel));
}
count = count + 1;
for (int k = 0; k < listdata.size(); k++) {
Object[] object = listdata.get(k);
if (object != null && object.length > 0) {
for (int h = 0; h < object.length; h++) {
sheet.addCell(new Label(h, k + count, object[h] != null && !"".equals(object[h]) ? String.valueOf(object[h]).trim() + "" : "", writableCellFormatNew));
}
}

}
}

/**
* 设置单元格属性(内容字体格式)
*
* @return
* @throws WriteException
*/
public static WritableCellFormat writableCellFormatNew() throws WriteException {
/**
* 标题字体格式 <br>
* 第一个参数:字体类型 <br>
* 第二个参数:字体大小 <br>
* 第三个参数:字体加粗 <br>
* 第四个参数:字体加粗<br>
*
*/
/** 内容字体格式 */
WritableFont font2 = new WritableFont(WritableFont.createFont("宋体"), 9, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE);// NO下划线
/** 设置单元格属性 */
WritableCellFormat format1 = new WritableCellFormat(font2);
/** 加边框 */
format1.setBorder(Border.ALL, BorderLineStyle.THIN);
/** 设置居中 */
format1.setAlignment(Alignment.CENTRE);
return format1;
}
/**
* 设置单元格属性(标题)<br>
*
* @return
* @throws WriteException
*/
public static WritableCellFormat writableCellFormatTitleNew() throws WriteException {
/**
* 标题字体格式 <br>
* 第一个参数:字体类型 <br>
* 第二个参数:字体大小 <br>
* 第三个参数:字体加粗 <br>
* 第四个参数:字体加粗<br>
*
*/
WritableFont font1 = new WritableFont(WritableFont.createFont("宋体"), 15, WritableFont.BOLD, false, UnderlineStyle.SINGLE);// NO下划线
/** 设置单元格属性 */
WritableCellFormat format1 = new WritableCellFormat(font1);
// /** 加边框 */
// format1.setBorder(Border.ALL, BorderLineStyle.THIN);
/** 设置居中 */
format1.setAlignment(Alignment.CENTRE);
// format1.setBackground(Colour.GRAY_25);
return format1;
}
public static WritableCellFormat writableCellFormatTitleLabelNew() throws WriteException {
/**
* 标题字体格式 <br>
* 第一个参数:字体类型 <br>
* 第二个参数:字体大小 <br>
* 第三个参数:字体加粗 <br>
* 第四个参数:字体加粗<br>
*
*/
WritableFont font1 = new WritableFont(WritableFont.createFont("宋体"), 12, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE);// NO下划线
/** 设置单元格属性 */
WritableCellFormat format1 = new WritableCellFormat(font1);
/** 加边框 */
// format1.setBorder(Border.ALL, BorderLineStyle.THIN);
/** 设置居中 */
format1.setAlignment(Alignment.LEFT);
// format1.setBackground(Colour.GRAY_25);
return format1;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值