jsp导出excel jxl

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 。。。%>出现一次就是一空行....

 

共享、备忘...

你可能感兴趣的:(jsp,Excel,OS,WCF,jxl 换行)