java导出excel表

包说明:本文主要使用jxl.jar,jxl是java关于Excel的一个工具类。

源代码介绍:

public void exportExcel(HttpServletRequest request,
HttpServletResponse response){

    String fileName = "会议列表.xls";

   //设置响应头

    response.setContentType("application/vnd.ms-excel;charset=GBK");
    response.addHeader("Content-Disposition", "attachment;filename="
+ URLEncoder.encode(fileName, "UTF-8"));
    writeMinutesExcel("会议纪要列表", response.getOutputStream());

}

private void writeMinutesExcel(String titleName, OutputStream os,
List myMeetingList) throws Exception {
WritableWorkbook wwb = Workbook.createWorkbook(os);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");

                //创建sheet

WritableSheet ws = wwb.createSheet("会议纪要列表", 0);
// 设置列宽;
ws.setColumnView(0, 12);// 序号
ws.setColumnView(1, 40);// 会议类型;
ws.setColumnView(2, 40);// 会议主题;
ws.setColumnView(3, 20);// 会议纪要或成果;
ws.setColumnView(4, 20);// 会议组织单位;
ws.setColumnView(5, 15);// 应召开周期和时间;
ws.setColumnView(6, 15);// 实际召开时间;

WritableFont wf = null;
WritableCellFormat wcf = null;
Label lb = null;


// 第一行;
// 设置行高;
ws.setRowView(0, 30);
// 合并第一列第一行到第六列第一行的所有单元格
// sheet.mergeCells(0,0,5,0);
// 合并既可以是横向的,也可以是纵向的。合并后的单元格不能再次进行合并,否则会触发异常。
ws.mergeCells(0, 0, 8, 0);
wf = new WritableFont(WritableFont.ARIAL, 15, WritableFont.BOLD, false,
UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
wcf = new WritableCellFormat(wf);
// 居中;
wcf.setAlignment(Alignment.CENTRE);
// 行号从零开始
lb = new Label(0, 0, titleName, wcf);
ws.addCell(lb);

                //列头样式设置
wcf = getHeaderCellStyle();

                //添加列名
lb = new Label(0, 1, "序号", wcf);
ws.addCell(lb);
lb = new Label(1, 1, "会议类型", wcf);
ws.addCell(lb);
lb = new Label(2, 1, "会议主题", wcf);
ws.addCell(lb);
lb = new Label(3, 1, "会议纪要或成果", wcf);
ws.addCell(lb);
lb = new Label(4, 1, "会议组织单位", wcf);
ws.addCell(lb);
lb = new Label(5, 1, "应召开周期和时间", wcf);
ws.addCell(lb);
lb = new Label(6, 1, "实际召开时间", wcf);
ws.addCell(lb);

int offset = 2;

                //单元格样式设定

wcf = getBodyCellStyle();

                //添加单元格内容

for (int i = 0; i < minutesPageList.size(); i++) {
Map minuteMap = (Map) myMeetingList.get(i);
if (minuteMap != null) {
lb = new Label(0, offset, String.valueOf(i + 1), wcf);// 序号
ws.addCell(lb);
lb = new Label(1, offset,minuteMap.get("ext17")==null?"":minuteMap.get("ext17").toString(), wcf);// 会议类型;
ws.addCell(lb);
lb = new Label(2, offset, minuteMap.get("ext16")==null?"":minuteMap.get("ext16").toString(), wcf);// 会议主题;
ws.addCell(lb);
lb = new Label(3, offset, minuteMap.get("name")==null?"":minuteMap.get("name").toString(), wcf);// 会议纪要或成果
ws.addCell(lb);
lb = new Label(4, offset, minuteMap.get("ext18")==null?"":minuteMap.get("ext18").toString(), wcf);//会议组织单位
ws.addCell(lb);
lb = new Label(5, offset, minuteMap.get("ext19")==null?"":minuteMap.get("ext19").toString(), wcf);// 应召开周期和时间
ws.addCell(lb);
lb = new Label(6, offset, minuteMap.get("ext29")==null?"":minuteMap.get("ext29").toString(), wcf);// 实际召开时间
ws.addCell(lb);
}
offset++;
}


wwb.write(); // 写入文件
wwb.close();
os.flush();
os.close();

}

/**
* 表头单元格样式的设定
*/
public WritableCellFormat getHeaderCellStyle() {
/*
* WritableFont.createFont("宋体"):设置字体为宋体 10:设置字体大小
* WritableFont.BOLD:设置字体加粗(BOLD:加粗 NO_BOLD:不加粗) false:设置非斜体
* UnderlineStyle.NO_UNDERLINE:没有下划线
*/
// WritableFont font = new WritableFont(WritableFont.createFont("宋体"),
// 13, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
// Colour.BLACK);
WritableFont font = new WritableFont(WritableFont.ARIAL, 13,
WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
Colour.BLACK);
// WritableCellFormat headerFormat = new
// WritableCellFormat(NumberFormats.TEXT);
WritableCellFormat headerFormat = new WritableCellFormat(font);
try {
// 添加字体设置
// headerFormat.setFont(font);
// 设置单元格背景色:表头为黄色
headerFormat.setBackground(Colour.YELLOW);
// 设置表头表格边框样式
// 整个表格线为粗线、黑色
// headerFormat.setBorder(Border.ALL, BorderLineStyle.THICK,
// Colour.BLACK);
headerFormat.setBorder(Border.ALL, BorderLineStyle.THICK);
// 表头内容水平居中显示
headerFormat.setAlignment(Alignment.CENTRE);
// 固定;
headerFormat.setLocked(true);
} catch (WriteException e) {
System.out.println("表头单元格样式设置失败!");
}
return headerFormat;

}

/**
* 表头单元格样式的设定
*/
public WritableCellFormat getBodyCellStyle() {


/*
* WritableFont.createFont("宋体"):设置字体为宋体 10:设置字体大小
* WritableFont.NO_BOLD:设置字体非加粗(BOLD:加粗 NO_BOLD:不加粗) false:设置非斜体
* UnderlineStyle.NO_UNDERLINE:没有下划线
*/
// WritableFont font = new
// WritableFont(WritableFont.createFont("宋体"),10, WritableFont.NO_BOLD,
// false, UnderlineStyle.NO_UNDERLINE);
WritableFont font = new WritableFont(WritableFont.ARIAL, 12,
WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
Colour.BLACK);
WritableCellFormat bodyFormat = new WritableCellFormat(font);
try {
// 设置单元格背景色:表体为白色
bodyFormat.setBackground(Colour.WHITE);
// 设置表头表格边框样式
// 整个表格线为细线、黑色
bodyFormat.setBorder(Border.ALL, BorderLineStyle.THIN);


} catch (WriteException e) {
System.out.println("表体单元格样式设置失败!");
}
return bodyFormat;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值