jxl 导出关键代码

private void doExportStatistics(ActionRequest actionRequest,ActionResponse actionResponse) throws IOException, SystemException, RowsExceededException, WriteException,
PortalException{


OutputStream outputStream=new FileOutputStream("路径"+"文件名"+".xls");

WorkbookSettings setting = new WorkbookSettings();
java.util.Locale locale = new java.util.Locale("zh","CN");
setting.setLocale(locale);
setting.setEncoding("ISO-8859-1");

WritableWorkbook wbook = Workbook.createWorkbook(outputStream);//创建一个可写入的工作薄(Workbook)对象
WritableSheet wsheet = wbook.createSheet(LanguageUtil.get(actionRequest, "Index.Scorel"), 0);//创建Excel工作表 并命名,第一个工作表

/*设置工作表中的默认列宽为12 可以看一下excel中具体的大小,
* 该值指的是在列最后出现双向箭头时,单击调节列宽时显示的前一个数值
* 如:宽度:9.00(77像素)中的9.00-->>9(因为是int型的只能设置为整数了哦!!)
* */
wsheet.getSettings().setDefaultColumnWidth(12);

/*
* 对工作表中的第一列为进行冻结窗口,实行浮动效果
* */

// wsheet.getSettings().setHorizontalFreeze(1);

/*
* 对工作表中的第一行为进行冻结窗口,实行浮动效果
* */
wsheet.getSettings().setVerticalFreeze(1);
// wsheet.getSettings().setDefaultRowHeight(60);

/*
* 设置指定行的行高:从0开始
* 关于行高:通列宽一样,但值得注意的是:在显示高度时 前一个数值*20
* 如:高度30.00(40像素)中 要用30*20=600
*
* */
wsheet.setRowView(0, 600);


/*
* 设置字体样式 (字体,大小,加粗等……)值的注意的是jxl中不能自定义颜色!
* 要想自定义颜色是比较麻烦的在这就不多说了!其实jxl内置的颜色也够基本的使用了,呵呵!
* */
WritableFont wfont = new WritableFont(WritableFont.ARIAL, 9,WritableFont.NO_BOLD, false, jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.WHITE);

WritableCellFormat titleFormat = new WritableCellFormat(wfont); //添加带有字体样式的formatting对象

titleFormat.setBackground(jxl.format.Colour.AQUA);//设置单元格的背景颜色
titleFormat.setWrap(true); //是否自动换行
titleFormat.setAlignment(jxl.format.Alignment.CENTRE);//上下的对齐方式
titleFormat.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//设置水平的对齐方式 当然还有其他许多常用的属性,这里就不在累述了


jxl.write.NumberFormat nf=new jxl.write.NumberFormat("#0.00#");//格式化数值!参数可见jxl api

WritableCellFormat numberFormat=new WritableCellFormat(nf);//添加带有格式化的Number对象
/*
* 对于数据的填入就可以根据自己的具体需要进行具体的填入了!!
* */

//下面是借用网络上的内容对其他类型的对象进行的简单说明
//ws 为WritableSheet的对象

/* //2.
Number labelN = new Number(0,1,3.1415926);
ws.addCell(labelN);

//添加带有formatting的Number对象
Numberformat nf = new Numberformat("#.##");
WritableCellformat wcfN = new WritableCellformat(nf);
Number labelNF = new jxl.write.Number(1,1,3.1415926,wcfN); //在b2单元格加入数据且是带有带有格式化的Number对象
ws.addCell(labelNF);

//3.添加Boolean对象
Boolean labelB = new jxl.write.Boolean(0,2,false);
ws.addCell(labelB);

//4.添加DateTime对象
jxl.write.DateTime labelDT = new jxl.write.DateTime(0,3,new java.util.Date());
ws.addCell(labelDT);

//添加带有formatting的Dateformat对象
Dateformat df = new Dateformat("dd MM yyyy hh:mm:ss");
WritableCellformat wcfDF = new WritableCellformat(df);
DateTime labelDTF = new DateTime(1,3,new java.util.Date(),wcfDF);
ws.addCell(labelDTF);


//添加图片对象,jxl只支持png格式图片
File image = new File("f:\\2.png");
WritableImage wimage = new WritableImage(0,1,2,2,image);
ws.addImage(wimage);*/


//************************************************************************
//写入工作表
wbook.write();
wbook.close();
outputStream.close();

//***********************下面是对创建的excel的导出部分************************

//其实就是把刚才生成的excel下载下来,这里就不在累述 了
File file=new File(basePath+number+".xls");
HttpServletResponse response=PortalUtil.getHttpServletResponse(actionResponse);
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition","attachment;filename="+file.getName());
response.setHeader("Content-Disposition","attachment;filename="+new String(file.getName().getBytes("gbk"),"iso-8859-1"));
FileInputStream fis=new FileInputStream(file);
BufferedInputStream buff=new BufferedInputStream(fis);
byte [] b=new byte[1024];
long k=0;
OutputStream myout=response.getOutputStream();
while(k<file.length()){
int j=buff.read(b,0,1024);
k+=j;
myout.write(b,0,j);
}
myout.flush();
fis.close();
myout.close();
file.delete();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值