ExcelUtil .java
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WriteException;
public class ExcelUtil {
/**
* 返回大标题格式
*/
public static WritableCellFormat createWcfTitle() {
WritableFont wfc_big = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD, false,
UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
WritableCellFormat wcf_title = new WritableCellFormat(wfc_big);
try {
wcf_title.setBorder(Border.ALL, BorderLineStyle.THIN);
wcf_title.setAlignment(Alignment.CENTRE);
wcf_title.setVerticalAlignment(VerticalAlignment.CENTRE);
wcf_title.setWrap(true);
} catch (WriteException e) {
e.printStackTrace();
}
return wcf_title;
}
/**
* 返回正文格式
*/
public static WritableCellFormat createWcfText() {
WritableFont wfc_small = new WritableFont(WritableFont.ARIAL, 12, WritableFont.NO_BOLD, false,
UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
WritableCellFormat wcf_text = new WritableCellFormat(wfc_small);
try {
wcf_text.setBorder(Border.ALL, BorderLineStyle.THIN);
wcf_text.setAlignment(Alignment.LEFT);
wcf_text.setWrap(true);
wcf_text.setVerticalAlignment(VerticalAlignment.CENTRE);
} catch (WriteException e) {
e.printStackTrace();
}
return wcf_text;
}
}
exportExcel.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@page import="java.io.*"%>
<%@page import="jxl.*"%>
<%@page import="com.xxx.ExcelUtil"%>
<%
response.reset();
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + new String("Excel文件.xls".getBytes("gb2312"), "iso8859-1"));
OutputStream os = response.getOutputStream();
WritableWorkbook wwb = null;
WritableCellFormat wcf_title = ExcelUtil.createWcfTitle();
WritableCellFormat wcf_text = ExcelUtil.createWcfText();
wwb = Workbook.createWorkbook(os);//将 WritableWorkbook 写入到输出流
WritableSheet ws = wwb.createSheet("sheet1", 0);//创建第一个sheet
ws.mergeCells(0, 0, 3, 0);//合并单元格
Label lbl = null;
lbl = new Label(0, 0, "大标题" + sumMonth, wcf_title);
ws.addCell(lbl);
lbl = new Label(0, 1, "列标题1", wcf_text);
ws.addCell(lbl);
lbl = new Label(1, 1, "列标题2", wcf_text);
ws.addCell(lbl);
lbl = new Label(2, 1, "列标题3", wcf_text);
ws.addCell(lbl);
lbl = new Label(3, 1, "列标题4", wcf_text);
ws.addCell(lbl);
for (int i = 0; i < 3; i++) //设置宽度
ws.setColumnView(i, 15);
os.flush();
wwb.write();
wwb.close();
os.close();
%>
补充一重要的用法
合并单元格:
WritableSheet.mergeCells(int col1, int row1, int col2, int row2)
单元格(col1,row1)到对角单元格(col2,row2)之间的合并为一个单元格
单元格换行
用\n换行( 前置条件是wcf_text.setWrap(true);)
Label lbl = new Label(1, 3, "星\n期", wcf_text);
jsp导出txt
方法1同上用response.getOutputStream (跳行用\r\n)
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + new String("文件名_".getBytes("gb2312"), "iso8859-1") + ".txt");
OutputStream os = response.getOutputStream();
os.write("abc".getBytes());
方法2
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition","attachment; filename=1.txt");
out.print("First line text.\r\n");
out.print("Second line.\r\n");
<%@ page 。。。%>出现一次就是一空行....
或
共享、备忘...