首页 > 技术文章 > JXL导出EXCEL 笔记

chenchaochao 2016-07-29 15:40 原文

常用:

(1)sheet

WritableSheet sheet1 = book.createSheet("Sheet1", 0);//Sheet1为名称,0为第1个sheet页

(2)sheet中单元格添加

// 指定单元格位置(如:第一列第一行(0, 0))以及单元格内容为(如:小明)
for (int i = 0; i < heads.length; i++) {
  Label cell = new Label(i, 0, heads[i]);//head[]是一个字符串数组
  // 将定义好的单元格添加到工作表中
  sheet1.addCell(cell);
 }

(3)单元格添加样式

// 指定单元格位置(如:第一列第一行(0, 0))以及单元格内容为(如:小明)
for (int i = 0; i < heads.length; i++) {
  Label cell = new Label(i, 0, heads[i],getHeaderCellStyle());//head[]是一个字符串数组,getHeaderCellStyle()是个单元格样式
  // 将定义好的单元格添加到工作表中
  sheet1.addCell(cell);
 }



public WritableCellFormat getHeaderCellStyle(){  
          
        /* 
         * WritableFont.createFont("宋体"):设置字体为宋体 
         * 10:设置字体大小 
         * WritableFont.BOLD:设置字体加粗(BOLD:加粗     NO_BOLD:不加粗) 
         * false:设置非斜体 
         * UnderlineStyle.NO_UNDERLINE:没有下划线 
         */  
        WritableFont font = new WritableFont(WritableFont.createFont("宋体"),  
                                             10,   
                                             WritableFont.BOLD,   
                                             false,  
                                             UnderlineStyle.NO_UNDERLINE);  
          
        WritableCellFormat headerFormat = new WritableCellFormat(NumberFormats.TEXT);  
        try {  
            //添加字体设置  
            headerFormat.setFont(font);  
            //设置单元格背景色:表头为黄色  
            //headerFormat.setBackground(Colour.YELLOW);  
            //设置表头表格边框样式  
            //整个表格线为粗线、黑色  
            //headerFormat.setBorder(Border.ALL, BorderLineStyle.THICK, Colour.BLACK);  
            //表头内容水平居中显示  
            headerFormat.setAlignment(Alignment.CENTRE);      
        } catch (WriteException e) {  
            System.out.println("表头单元格样式设置失败!");  
        }  
        return headerFormat;  
    }  

 (4)分sheet页

下面每1000条记录,分sheet页,可自己设置

list可传自己的list,返回为WritableWorkbook类型,heads为表头

public static WritableWorkbook createWorkBook(OutputStream os,List<UserInfo> list, String[] heads)
            throws IOException, WriteException, RowsExceededException,
            IllegalAccessException, InvocationTargetException,
            NoSuchMethodException {
        int sizeLoop = list.size();
        int size = list.size();
        if(sizeLoop < 1000){       //1000分页
            sizeLoop = 1000;
        }
        int sheetSize = 1000;
        int loopSize = sizeLoop/sheetSize;
        if(sizeLoop%sheetSize!=0){
            loopSize+=1;
        }
        WritableWorkbook ws = Workbook.createWorkbook(os);
        for(int l = 0;l<loopSize;l++){
            WritableSheet sheet = ws.createSheet("第"+(l+1)+"页", l);
            
            for(int i=0;i<heads.length;i++){
                Label cell = new Label(i,0, heads[i]);
                sheet.addCell(cell );
            }
            int n = 0;
            for(int i=l*sheetSize;i<(l+1)*sheetSize && i<=size-1;i++){
                for(int k=0; k < heads.length; k++){
                    Label cell = null;
                    cell = new Label(k, n+1,list.get(i).getName());
                    sheet.addCell(cell);
                }
                n++;
            }
        }
        return ws;
    }

 

推荐阅读