2015-06-19 71 views
1

我試圖在兩個excel文件之間添加一個標題,當我合併它們時。這兩個文件有表格,我可以將它們合併到一起,但我無法弄清楚如何在這兩個表格之間添加一個標題。 我負責合併工作表的代碼部分看起來像這樣;在兩個excel文件合併期間操縱單元格

public static void addSheet(org.apache.poi.ss.usermodel.Sheet mergedSheet, org.apache.poi.ss.usermodel.Sheet sheet,String title) { 
     // map for cell styles 
     Map<Integer, org.apache.poi.ss.usermodel.CellStyle> styleMap = new HashMap<Integer, org.apache.poi.ss.usermodel.CellStyle>(); 

     // This parameter is for appending sheet rows to mergedSheet in the end 
     int len = mergedSheet.getLastRowNum(); 
     for (int j = sheet.getFirstRowNum(); j <= sheet.getLastRowNum(); j++) { 

      org.apache.poi.ss.usermodel.Row row = sheet.getRow(j); 
      org.apache.poi.ss.usermodel.Row mrow = mergedSheet.createRow(len + j + 1); 
      try { 
       for (int k = row.getFirstCellNum(); k < row.getLastCellNum(); k++) { 
       org.apache.poi.ss.usermodel.Cell cell=null; 
       if(row.getCell(k)!=null){ 
       cell = row.getCell(k); 
       }else{ 
        cell= row.createCell(k); 
       } 
       org.apache.poi.ss.usermodel.Cell mcell = mrow.createCell(k); 

       if (cell.getSheet().getWorkbook() == mcell.getSheet() 
         .getWorkbook()) { 
        mcell.setCellStyle(cell.getCellStyle()); 
       } else { 
        int stHashCode = cell.getCellStyle().hashCode(); 
        org.apache.poi.ss.usermodel.CellStyle newCellStyle = styleMap.get(stHashCode); 
        if (newCellStyle == null) { 
         newCellStyle = mcell.getSheet().getWorkbook() 
           .createCellStyle(); 
         newCellStyle.cloneStyleFrom(cell.getCellStyle()); 
         styleMap.put(stHashCode, newCellStyle); 
        } 
        mcell.setCellStyle(newCellStyle); 
       } 

       switch (cell.getCellType()) { 
       case HSSFCell.CELL_TYPE_FORMULA: 
        mcell.setCellFormula(cell.getCellFormula()); 
        break; 
       case HSSFCell.CELL_TYPE_NUMERIC: 
        mcell.setCellValue(cell.getNumericCellValue()); 
        break; 
       case HSSFCell.CELL_TYPE_STRING: 
        mcell.setCellValue(cell.getStringCellValue()); 
        break; 
       case HSSFCell.CELL_TYPE_BLANK: 
        mcell.setCellType(HSSFCell.CELL_TYPE_BLANK); 
        break; 
       case HSSFCell.CELL_TYPE_BOOLEAN: 
        mcell.setCellValue(cell.getBooleanCellValue()); 
        break; 
       case HSSFCell.CELL_TYPE_ERROR: 
        mcell.setCellErrorValue(cell.getErrorCellValue()); 
        break; 
       default: 
        mcell.setCellValue(cell.getStringCellValue()); 
        break; 
       } 
      } 
      } catch (Exception e) { 
      } 

     } 
    } 

任何想法?

回答

1

可能不是你想要的,但你可以用只有標題創建第三個excel文件。

+0

是啊對我來說不是很有用,因爲我要合併200個文件.. – tolquito

+0

啊,我明白了。您也可以在代碼中創建電子表格,並將其傳遞給您希望的標題....或者在合併之前將其添加到前一個/下一個電子表格的第一行/最後一行,而不保存。 – Blaargon

+0

你有什麼例子嗎?這將是偉大的 – tolquito