六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 57|回复: 0

jxl操作Excle

[复制链接]

升级  4.67%

13

主题

13

主题

13

主题

秀才

Rank: 2

积分
57
 楼主| 发表于 2013-1-15 03:11:29 | 显示全部楼层 |阅读模式
比较两个Excle文件中内容是否一致,即读操作
public class ExcelServlet extends HttpServlet {private static final long serialVersionUID = 2688124847613698710L;protected void doPost(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {    response.setContentType("text/xml;charset=UTF-8");response.setHeader("Cache-Control","no-cache");String oneFile=request.getParameter("oneFile");String towFile=request.getParameter("towFile");int columnCount=Integer.parseInt(request.getParameter("column"));//列数int row=Integer.parseInt(request.getParameter("row"))-1;//从第几行开始读PrintWriter out = response.getWriter();out.print("<response>");Workbook rwb2=null;Workbook rwb1=null;boolean sing =true;InputStream is1 = new FileInputStream(oneFile);InputStream is2 = new FileInputStream(towFile);try{        rwb1 = Workbook.getWorkbook(is1);        rwb2 = Workbook.getWorkbook(is2);}catch(BiffException e){out.print("<message>BiffException异常</message>");sing=false;} Cell cell1 = null;         Cell cell2 = null;         Sheet sheet1 = rwb1.getSheet(0);         Sheet sheet2 = rwb2.getSheet(0);        int rowCount=sheet1.getRows();       for (int i = row; i <rowCount; i++) {//行       for (int j = 0; j <columnCount; j++){//列       cell1=sheet1.getCell(j, i);       cell2=sheet2.getCell(j, i);       if(!cell1.getContents().trim().equals(cell2.getContents().trim())){           out.print("<message>第"+(i+1)+"行 第"+(j+1)+"列,数据不一致</message>");           sing=false;           }       }       }    if(sing){    out.print("<message>未发现不一致数据</message>");    }    rwb1.close();    rwb2.close();    out.print("</response>");    }}创建Excle文件
public class PaperService {public static void writeExcel(OutputStream os,List<SubjectVo> list) {try {/** * 只能通过API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数, * 因为类WritableWorkbook的构造函数为protected类型 * method(1)直接从目标文件中读取WritableWorkbook wwb = * Workbook.createWorkbook(new File(targetfile)); method(2)如下实例所示 * 将WritableWorkbook直接写入到输出流 *  */WritableWorkbook wwb = Workbook.createWorkbook(os);// 创建Excel工作表 指定名称和位置WritableSheet ws = wwb.createSheet("试题模版", 0);// **************往工作表中添加数据*****************WritableFont wf =new WritableFont(WritableFont.TIMES, 12,WritableFont.BOLD, false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);WritableCellFormat wcf=new WritableCellFormat(wf);Label labelcf =null;String title[]={"所属内容","题目","试题类型","A","B","C","D","正确答案","分值"};//创建第一行----标题for(int i=0;i<title.length;i++){labelcf = new Label(i, 0, title, wcf);ws.addCell(labelcf);}//创建试题内容wf =new WritableFont(WritableFont.TIMES, 12);wcf=new WritableCellFormat(wf);for(int row=0;row<list.size();row++){labelcf = new Label(0, row+1, list.get(row).getTitle(), wcf);ws.addCell(labelcf);labelcf = new Label(1, row+1, list.get(row).getTitles(), wcf);ws.addCell(labelcf);labelcf = new Label(2, row+1, list.get(row).getType(), wcf);ws.addCell(labelcf);labelcf = new Label(3, row+1, list.get(row).getA(), wcf);ws.addCell(labelcf);labelcf = new Label(4, row+1, list.get(row).getB(), wcf);ws.addCell(labelcf);labelcf = new Label(5, row+1, list.get(row).getC(), wcf);ws.addCell(labelcf);labelcf = new Label(6, row+1, list.get(row).getD(), wcf);ws.addCell(labelcf);labelcf = new Label(7, row+1, list.get(row).getDaan(), wcf);ws.addCell(labelcf);labelcf = new Label(8, row+1, list.get(row).getFenzhi(), wcf);ws.addCell(labelcf);}wwb.write();wwb.close();} catch (Exception e) {e.printStackTrace();}}}注意:在对Excle进行操作时,行和列的下标均从0开始
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表