2015-06-19 74 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

相关问题