java输入输出流

2024-11-08 18:50:28
推荐回答(2个)
回答(1):

你先把xls文件组织好
然后用
response.setContentType(
"application/ms-excel;charset=GB2312");
response.setHeader(
"Content-Disposition",
"attachment;filename=keke.xls");
设置响应头
然后把xls对象用二进制流读进来
转成byte[]
在用
response.getOutputStream()得到响应的输出流
把btye[]输入到也面就可以了

由于我没有用过楼主所用的WritableWorkbook这个类,所以怎样转我也不敢乱说
我做XLS的时候用的是POI的包,他内部封装了一些东西,可以很容易的就得到workbook的流.
如果楼主有兴趣,建议看一下,使用起来非常简单

回答(2):

这个好像不是这么这么来的吧。
我记得程序分两部分,一部分excel的,一部分是写成流的。
找下吧,自己改下,不难,我在家倒是有一份,可是家里不能上网!
package com.cthq.crm.account.common;
import java.io.OutputStream;
import java.util.List;
import jxl.Workbook;
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;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class ExportExcel {

public String exportExcel(OutputStream os, String sheetName,String title,List list)
throws Exception {
WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件
//生成名为参数(sheetName)的工作表,参数0表示这是第一页
WritableSheet wsheet = wbook.createSheet(sheetName, 0); // sheet名称
// 设置excel标题
WritableFont wfont = new WritableFont(WritableFont.ARIAL, 12,
WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
Colour.BLACK);
WritableCellFormat wcfFC = new WritableCellFormat(wfont);
// 设置单元格背景色为浅绿色
wcfFC.setBackground(Colour.AQUA);
// wsheet.addCell(new Label(1, 0, title, wcfFC));
wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 10,
WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
Colour.BLACK);
WritableCellFormat wcfFC1 = new WritableCellFormat(wfont);
// 开始生成主体内容
wsheet.addCell(new Label(0, 0, "姓 名", wcfFC));
wsheet.addCell(new Label(1, 0, "性 别", wcfFC));
wsheet.addCell(new Label(2, 0, "生 日", wcfFC));
for (int i = 0; i < list.size(); i++) {
wsheet.addCell(new Label(0, i+1, list.get(i).toString(),wcfFC1));
wsheet.addCell(new Label(1, i+1, list.get(i).toString(),wcfFC1));
wsheet.addCell(new Label(2, i+1, list.get(i).toString(),wcfFC1));
}

// 主体内容生成结束
wbook.write(); // 写入文件
wbook.close();
os.close();
return "success";
}
}

这个是我找的,你把相应的写的部分改下,在action中调用就行了!