用jxl导出excel为什么把我自己在模板中设置的格式冲掉了
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);
}}}
把我自己在模板中设置的格式冲掉了,我画的表格线也没有了~~~~
[解决办法]
你的程序有点没看懂,我这里有一个程序,希望能对你有点帮助
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);
}
[解决办法]
或者:
Label label = new Label(col + j - 1, row,labelvalue);
改成:
Label l = (Label)cellb;
l.setString(labelvalue);
[解决办法]
使用专业的excel操作组件Jxcell,
http://www.jxcell.net
[解决办法]
顶