jxl写入excel时格式处理 右对齐 粗体颜色等等

File tempFile=new File("d:/temp/output.xls");
WritableWorkbook workbook 
= Workbook.createWorkbook(tempFile);   
WritableSheet sheet 
= workbook.createSheet("TestCreateExcel"0);    
  
//一些临时变量,用于写到excel中   
Label l=null;   
jxl.write.Number n
=null;   
jxl.write.DateTime d
=null;   
  
//预定义的一些字体和格式,同一个Excel中最好不要有太多格式   
 WritableFont headerFont = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD, 
    
false, Underlinestyle.NO_UNDERLINE, jxl.format.Colour.BLUE);    
 WritableCellFormat headerFormat 
= new WritableCellFormat (headerFont);    
   
 WritableFont titleFont 
= new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD,
     
false, Underlinestyle.NO_UNDERLINE, jxl.format.Colour.RED);    
 WritableCellFormat titleFormat 
= new WritableCellFormat (titleFont);    
   
 WritableFont detFont 
= new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, 
    
false, Underlinestyle.NO_UNDERLINE, jxl.format.Colour.BLACK);    
 WritableCellFormat detFormat 
= new WritableCellFormat (detFont);    
   
 NumberFormat nf
=new NumberFormat("0.00000"); //用于Number的格式   
 WritableCellFormat priceFormat = new WritableCellFormat (detFont, nf);    
   
 DateFormat df
=new DateFormat("yyyy-MM-dd");//用于日期的   
 WritableCellFormat dateFormat = new WritableCellFormat (detFont, df);    
   
 
//剩下的事情,就是用上面的内容和格式创建一些单元格,再加到sheet中   
 l=new Label(00"用于测试的Excel文件", headerFormat);   
 sheet.addCell(l);   
   
 
//add Title   
 int column=0;   
 l
=new Label(column++2"标题", titleFormat);   
 sheet.addCell(l);   
 l
=new Label(column++2"日期", titleFormat);   
 sheet.addCell(l);   
 l
=new Label(column++2"货币", titleFormat);   
 sheet.addCell(l);   
 l
=new Label(column++2"价格", titleFormat);   
 sheet.addCell(l);   
   
 
//add detail   
 int i=0;   
 column
=0;   
 l
=new Label(column++, i+3"标题 "+i, detFormat);   
 sheet.addCell(l);   
 d
=new DateTime(column++, i+3new java.util.Date(), dateFormat);   
 sheet.addCell(d);   
 l
=new Label(column++, i+3"CNY", detFormat);   
 sheet.addCell(l);   
 n
=new jxl.write.Number(column++, i+35.678, priceFormat);   
 sheet.addCell(n);   
   
 i
++;   
 column
=0;   
 l
=new Label(column++, i+3"标题 "+i, detFormat);   
 sheet.addCell(l);   
 d
=new DateTime(column++, i+3new java.util.Date(), dateFormat);   
 sheet.addCell(d);   
 l
=new Label(column++, i+3"SGD", detFormat);   
 sheet.addCell(l);   
 n
=new jxl.write.Number(column++, i+398832, priceFormat);   
 sheet.addCell(n);   
   
 
//设置列的宽度   
 column=0;   
 sheet.setColumnView(column
++20);   
 sheet.setColumnView(column
++20);   
 sheet.setColumnView(column
++10);   
 sheet.setColumnView(column
++20);   
   
 workbook.write();   
 workbook.close();   

我正在做的项目里定义了很多样式,好像速度也不算慢,还有一些其他方面的定义,补充到下面:

     // 构造格式:ARIAL字体、10号、粗体、非斜体、无下划线、黑色
    WritableFont fmtx2TotalCaption  =   new  WritableFont(WritableFont.ARIAL, 10 ,WritableFont.BOLD,
        
false ,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK); 
    WritableCellFormat totalx2Format 
=   new  WritableCellFormat(fmtx2TotalCaption);
   
// 文字垂直居中对齐
    totalx2Format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); 
   
// 文字水平居中对齐 
    totalx2Format.setAlignment(jxl.format.Alignment.CENTRE);   
    
// 边框深蓝色
    totalx2Format.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN,
        jxl.format.Colour.DARK_BLUE);
    
// 设置底色为冰蓝
    totalx2Format.setBackground(jxl.format.Colour.ICE_BLUE); 

 
    sheet.mergeCells(
0 , row,  8 , row);   // 合并单元格,row 到 row 行,0 到 8 列

    sheet.setRowView(row, 
600 ); //  第 row 行的高度


另外就是要在 Action(servlet) 中这么写,IE就会直接弹出保存文件的对话框(注意要占用当前窗口):

    String title  =   " XXXX统计 " ;
    OutputStream out 
=  response.getOutputStream();
    WritableWorkbook wb 
=  Workbook.createWorkbook(out);
    response.setContentType(
" aplication/vnd.ms-excel " );
    response.addHeader(
" Content-Disposition " , " inline; filename= "   +   new  String(title.getBytes( " GB2312 " ), " ISO8859_1 " +   " .xls " );   // 有中文必须转码
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值