java输入输出流

客户后台管理有一个导出报表按扭(目的是将客户资料导入到EXCEL表格中,文件保存到客户端)
程序分析:
1.在action中生成keke.xls文件,将所有数据添加到keke.xls中
WritableWorkbook book = Workbook.createWorkbook(new File("keke.xls"));
WritableSheet sheet = book.createSheet("第一页", 0);
设置标题头
Label labelTitle1 = new Label(0, 0, "编号");
Label labelTitle2 = new Label(1, 0, "用户名");
Label labelTitle3 = new Label(2, 0, "密码");
Label labelTitle4 = new Label(3, 0, "邮件");
2.将keke.xls文件下载到客户端
??我想如何才能将生成的keke.xls文件保存到客户端
请高手指教
支技: 专治牛皮癣_M的 方法
但是该如何将
WritableWorkbook book = Workbook.createWorkbook(new File("keke.xls"));
转换成二进制流读进来呢
我用
FileInputStream in=new FileInputStream(book);
或是
InputStream in=new InputStream(book);
会提示出错

还请各位多提供几点见意

你先把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的流.
如果楼主有兴趣,建议看一下,使用起来非常简单
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-07-08
这个好像不是这么这么来的吧。
我记得程序分两部分,一部分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中调用就行了!
相似回答