即两张导入的EXECL表格数据,如A表和B表,选择A表在上传时先要检查EXCEL工作簿内容是否为空,选择参数条件取某一行标记为表头,在选择某一列作为原始的对比参数数据,B表也是定义一行表头和对碰的列作为对比参数,如果表头遇到上下合并列,取当前选择的行的表头,左右合并的列(目前暂不会出现)取靠前的列表头和内容数据,两张表此列进行对比,把相同列这一行的数据整合成另外一张EXCEL表格,两张表相同的一列数据放在EXCEL表格的第一列,或者两张表把相同的那一列数据用不同的颜色标记出来。注:表头显示A、B的表头,顺序是A表显示,后面追加B表的表头(即A、B表的表头要保持原来的一致)。如:
A表:选中 第“2”行作为表头“A”列作为参考条件。
1 A B C
2 编号 名称 地址
3 001 AAA 中山库充大道1
4 002 BBB 中山库充大道2
5 003 CCC 中山库充大道3
6 004 DDD 中山库充大道4
7 005 EEE 中山库充大道5
查询条件:行数、列数。
B表:选中 第“2”行作为表头“B”列作为参考条件。
1 A B C
2 创建时间 编号 任务名称
3 2011-06-28 1001 测试1
4 2011-06-27 1002 测试2
5 2011-06-29 001 测试3
6 2011-06-30 002 测试4整合后输出效果(相同列用颜色标记出来):
1 A B C D E F
2 编号 名称 地址 创建时间 编号 任务名称
3 001 AAA 中山库充大道1 2011-06-29 001 测试1
4 002 BBB 中山库充大道2 2011-06-30 002 测试2
5 或者(相同列排列在最前面):
1 A B C D F
2 编号 名称 地址 创建时间 任务名称
3 001 AAA 中山库充大道1 2011-06-29 测试1
4 002 BBB 中山库充大道2 2011-06-30 测试2
5

解决方案 »

  1.   

    A:part Map<String,String[]> tallB=new HashMap<String,String[]>();
    ============
     try {
           Workbook book = Workbook.getWorkbook("B表.xls");
         Sheet[] sheets = book.getSheets();
         for(int i = 0;i<sheets.length;i++){
         Sheet sheet = sheets[i];//每个sheet
         int rows = sheet.getRows();
         int columns =sheet.getColumns();
         if(columns<=0){
             continue;//为空时。
         }else{
         String createD = sheet.getCell(0, 1).getContents().trim();
         String   orderno = sheet.getCell(1, 1).getContents().trim();
         String taskname = sheet.getCell(2, 1).getContents().trim();
           if(createD.equalsIgnoreCase("创建时间")
         &&orderno.equalsIgnoreCase("编号")
         &&taskname.equalsIgnoreCase("任务名称")){
            for(int j=2;j < rows;j++){
                   createD = sheet.getCell(0, j).getContents().trim();
                   orderno = sheet.getCell(1, j).getContents().trim();
                   taskname = sheet.getCell(2, j).getContents().trim();
                   tallB.put(orderno,new String[]{createD,taskname});
               
            }
           
           
           } 
        
         }
    }
    book.close();
    } catch (Exception e) {
         e.printStackTrace();
         }
         }
    ===============
    try {
             WritableWorkbook newbook = Workbook.createWorkbook(new File("newFile.xls"));
    WritableSheet newsheet = newbook.createSheet(" Sheet 1 ", 0);
         // 设置字体样式
    WritableFont wfc = new WritableFont(WritableFont.ARIAL, 13,
    WritableFont.BOLD, false,
    jxl.format.UnderlineStyle.NO_UNDERLINE,
    jxl.format.Colour.BLACK);
    WritableCellFormat wcfFC = new WritableCellFormat(wfc);

    newsheet.addCell(new Label(0, 0, "A ", wcfFC));
    newsheet.addCell(new Label(1, 0, "B ", wcfFC));
    newsheet.addCell(new Label(2, 0, "C ", wcfFC));
    newsheet.addCell(new Label(3, 0, "D ", wcfFC));
    newsheet.addCell(new Label(4, 0, "E ", wcfFC));
          Label neworderno = new Label(0, 1, " 编号 ", wcfFC);
    Label newtitle = new Label(1, 1, " 描述 ", wcfFC);
    Label newaddress = new Label(2, 1, " 单位 ", wcfFC);
    Label newcreate = new Label(3, 1, " 创建时间 ", wcfFC);
    Label newtaskname = new Label(4, 1, " 任务名称 ", wcfFC);

    newsheet.addCell(neworderno);
    newsheet.addCell(newtitle);
    newsheet.addCell(newaddress);
    newsheet.addCell(newcreate);
    newsheet.addCell(newtaskname);
       
            int newIndex=2;       Workbook book = Workbook.getWorkbook("A表.xls");
         Sheet[] sheets = book.getSheets();
         for(int i = 0;i<sheets.length;i++){
         Sheet sheet = sheets[i];//每个sheet
         int rows = sheet.getRows();
         int columns =sheet.getColumns();
         if(columns<=0){
             continue;//为空时。
         }else{
         String orderno = sheet.getCell(0, 1).getContents().trim();
         String   title = sheet.getCell(1, 1).getContents().trim();
         String address = sheet.getCell(2, 1).getContents().trim();
           if(orderno.equalsIgnoreCase("编号")
         &&title.equalsIgnoreCase("名称")
         &&address.equalsIgnoreCase("单位")){
            for(int j=2;j < rows;j++){
                 orderno = sheet.getCell(0, j).getContents().trim();
                 title = sheet.getCell(1, j).getContents().trim();
                 address = sheet.getCell(2, j).getContents().trim();
                  if(TestInculd(orderno)!=null)  {
                        newsheet.addCell(new Label(0, newIndex, orderno ));
                         newsheet.addCell(new Label(1, newIndex, title ));
                          newsheet.addCell(new Label(2, newIndex, address ));
                           newsheet.addCell(new Label(3, newIndex, TestInculd(orderno)[0] ));
                            newsheet.addCell(new Label(4, newIndex, TestInculd(orderno)[1] ));
                  newIndex++;
                  }
               
            }
           
           
           } 
        
         }
    }
     book.close();
     newbook.write();
    newbook.close();
    } catch (Exception e) {
         e.printStackTrace();
         }
        
        
      public String[] TestInculd(String orderno){
      if(tallB!=null){
        return tallB.get(orderno);
      
      }else{
        return null;
      } 
      }