• 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");  //有中文必须转码
  • 相关阅读:
    MySQL 对于千万级的大表要怎么优化?
    mysql数据库优化总结
    php 正则表达式怎么匹配标签里面的style?
    php一行代码获取本周一,本周日,上周一,上周日,本月一日,本月最后一日,上月一日,上月最后一日日期
    PHP过滤常用标签的正则表达式
    php冒泡排序
    PHP中__FUNCTION__与__METHOD__的区别
    关于PHP程序员技术职业生涯规划
    初识DSP
    MATLAB图像处理基础
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9331945.html
Copyright © 2020-2023  润新知