常用:
(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; }