List list = (List) request.getSession().getAttribute("list");
//读取自己模板
Workbook workbook = Workbook.getWorkbook(moFile);
WritableWorkbook copy = Workbook.createWorkbook(response.getOutputStream(), workbook);
WritableSheet sheet = copy.getSheet(0);
String ccol = request.getParameter("col");
String crow = request.getParameter("row");// 依次处理各行
for (int i = 0; i < list.size(); i++)
{
List listrow = (List) list.get(i);
int col = Integer.parseInt(ccol); 
// 起始列
int row = i+Integer.parseInt(crow); 
// 起始行
// 依次处理各列
for (int j = 0; j < listrow.size(); j++)
{
WritableCell cellb = sheet.getWritableCell(col + j - 1,row);
if (cellb.getType() == CellType.EMPTY)
{
String labelvalue = (String) listrow.get(j);
if (labelvalue == null)
labelvalue = "0";
log.info((col + j - 1)+"    "+row);
Label label = new Label(col + j - 1, row,labelvalue);
sheet.addCell(label);
}}}把我自己在模板中设置的格式冲掉了,我画的表格线也没有了~~~~

解决方案 »

  1.   

    你的程序有点没看懂,我这里有一个程序,希望能对你有点帮助
    try 

    Workbook book= Workbook.getWorkbook(new File("test.xls")); 
    //获得第一个工作表对象 
    Sheet sheet=book.getSheet(0); 
    //得到第一列第三行的单元格 
    WritableWorkbook book1= 
    Workbook.createWorkbook(new File("write.xls"));
    WritableSheet sheet1=book1.createSheet("B-2",0);
    int rowCount=sheet.getRows()-3;
    //System.out.println("rowcount="+rowCount);
    for(int i=0;i<rowCount;i++)
    {
    sheet1.setRowView(i*12+1,800);
    sheet1.mergeCells(0,i*12+1,16,i*12+1);
     WritableFont wf = new WritableFont(WritableFont.COURIER,18,WritableFont.BOLD,false);
                 WritableCellFormat wcf = new WritableCellFormat(wf);
                 //WritableFont wf1 = new WritableFont(WritableFont.COURIER,10,WritableFont.BOLD,false);
                 //WritableCellFormat wcf1 = new WritableCellFormat(wf1);
                 wcf.setAlignment(jxl.format.Alignment.CENTRE); 
    Label head=new Label(0,i*12+1,"儿童少年户卡",wcf);
    sheet1.addCell(head);
    sheet1.mergeCells(0,i*12+2,1,i*12+2);
    Label gtz=new Label(0,i*12+2,"高台子");
    sheet1.addCell(gtz);
    Label xz=new Label(2,i*12+2,"乡(镇)");
    sheet1.addCell(xz);
    sheet1.mergeCells(4,i*12+2,11,i*12+2);
    Label ycg=new Label(4,i*12+2,"洋草沟村");//可更改
    sheet1.addCell(ycg);
    //Label cun=new Label(6,i*12+2,"村");
    //sheet1.addCell(cun);
    //sheet1.mergeCells(7,i*12+2,11,i*12+2);
    Label tkrq=new Label(12,i*12+2,"填卡日期:");
    sheet1.addCell(tkrq);
    Label year=new Label(13,i*12+2,"2006  年");
    sheet1.addCell(year);
    Label month=new Label(14,i*12+2,"9  月");
    sheet1.addCell(month);
    sheet1.mergeCells(15,i*12+2,16,i*12+2);
    Label day=new Label(15,i*12+2,"日   ");
    sheet1.addCell(day);
    //sheet1.setRowView(i*12+3,800);
    Label jzxm=new Label(0,i*12+3,"家长姓名");
    sheet1.addCell(jzxm);
    Cell cell=sheet.getCell(14,i+3); 
    String result=cell.getContents();
    Label jzxm1=new Label(1,i*12+3,result);
    sheet1.addCell(jzxm1); 
    System.out.println(result); 
    Label zy=new Label(2,i*12+3,"职业");
    sheet1.addCell(zy);
    sheet1.mergeCells(3,i*12+3,5,i*12+3);
    Label zy1=new Label(3,i*12+3,"农民");
    sheet1.addCell(zy1);
    Label jtrk=new Label(6,i*12+3,"家庭人口");
    sheet1.addCell(jtrk);
    Label jtzz=new Label(8,i*12+3,"家庭住址");
    sheet1.addCell(jtzz);
    sheet1.mergeCells(9,i*12+3,16,i*12+3);
    sheet1.setRowView(i*12+4,800);
    sheet1.setColumnView(1,7);
    Label bh=new Label(0,i*12+4,"编号");
    sheet1.addCell(bh);
    Label bh1=new Label(0,i*12+5,(i+1)+"");
    sheet1.addCell(bh1);
    Label ertxm=new Label(1,i*12+4,"儿童少年姓名");
    sheet1.addCell(ertxm);
    Cell cell2=sheet.getCell(1,i+3);
    String result2=cell2.getContents();
    Label etxm=new Label(1,i*12+5,result2);
    sheet1.addCell(etxm);

    sheet1.setColumnView(2,5);
    Label xb=new Label(2,i*12+4,"性别");
    sheet1.addCell(xb);
    Cell cell1=sheet.getCell(2,i+3);
    String result1=cell1.getContents();
    Label xb1=new Label(2,i*12+5,result1);
    sheet1.addCell(xb1);

    sheet1.setColumnView(3,5);
    Label mz=new Label(3,i*12+4,"民族");
    sheet1.addCell(mz);
    Cell cell3=sheet.getCell(3,i+3);
    String result3=cell3.getContents();
    Label mz1=new Label(3,i*12+5,result3);
    sheet1.addCell(mz1);

    sheet1.setColumnView(4,8);
    Label csny=new Label(4,i*12+4,"出生年月日");
    sheet1.addCell(csny);
    Cell cell4=sheet.getCell(4,i+3);
    String result4=cell4.getContents();
    Label csny1=new Label(4,i*12+5,result4);
    sheet1.addCell(csny1);

    sheet1.setColumnView(5,5);
    Label nl=new Label(5,i*12+4,"年龄");
    sheet1.addCell(nl);

    sheet1.setColumnView(6,8);
    Label whcd=new Label(6,i*12+4,"文化程度");
    sheet1.addCell(whcd);

    sheet1.setColumnView(7,6);
    Label xjdxx=new Label(7,i*12+4,"现就读学校");
    sheet1.addCell(xjdxx);

    Label rxsj=new Label(8,i*12+4,"入学时间");
    sheet1.addCell(rxsj);

    Label sznj=new Label(9,i*12+4,"所在年级");
    sheet1.addCell(sznj);

    Label byxx=new Label(10,i*12+4,"毕业学校");
    sheet1.addCell(byxx);

    Label bysj=new Label(11,i*12+4,"毕业时间");
    sheet1.addCell(bysj);

    //sheet1.setColumnView(12,10);
    Label mbydmnx=new Label(12,i*12+4,"未毕业读满规定年限");
    sheet1.addCell(mbydmnx);

    sheet1.setColumnView(13,10);
    Label jfzgby=new Label(13,i*12+4,"经非正规教育完成相应学业");
    sheet1.addCell(jfzgby);

    Label cjlx=new Label(14,i*12+4,"残疾类型");
    sheet1.addCell(cjlx);

    //sheet1.setColumnView(12,6);
    Label ywxxnl=new Label(15,i*12+4,"有无学习能力");
    sheet1.addCell(ywxxnl);

    sheet1.setColumnView(16,5);
    Label bz=new Label(16,i*12+4,"备注");
    sheet1.addCell(bz);

    Label sm=new Label(0,i*12+9,"说明:");
    sheet1.addCell(sm);
    //Label label=new Label(1,0,result); 

            //sheet1.addCell(label);

    }







    book1.write(); 
    book1.close();
    book.close();  }catch(Exception e) 

    System.out.println(e); 
    }
      

  2.   

    那是因为自己new出来的Cell是没有格式的吧试下先从原来的cell取出原来的格式,再设置到new出来的cell里面
      

  3.   

    或者:
    Label label = new Label(col + j - 1, row,labelvalue);
    改成:
    Label l = (Label)cellb; 
    l.setString(labelvalue); 
      

  4.   

    使用专业的excel操作组件Jxcell,
    http://www.jxcell.net
      

  5.   

    to: malligator(十步之内没有我的爱人)Label l = (Label)cellb; 就报错啦~~~java.lang.ClassCastException: jxl.write.Blank