public class CopyExcelSheetToAnotherExcelSheet {

  public static void main(String[] args) throws FileNotFoundException, IOException {
    String fromPath = "D:\\share\\jiemu_new\\";// excel存放路径
    String toPath = "c:\\ok\\";// 保存新EXCEL路径
    // 新的excel 文件名
    String excelName = "节目访问量";
    // 创建新的excel
    HSSFWorkbook wbCreat = new HSSFWorkbook();
    File file = new File(fromPath);
    for (File excel : file.listFiles()) {
      // 打开已有的excel
      String strExcelPath = fromPath + "\\" + excel.getName();
      InputStream in = new FileInputStream(strExcelPath);
      HSSFWorkbook wb = new HSSFWorkbook(in);
      for (int ii = 0; ii < wb.getNumberOfSheets(); ii++) {
        HSSFSheet sheet = wb.getSheetAt(ii);
        HSSFSheet sheetCreat = wbCreat.createSheet(sheet.getSheetName());
        // 复制源表中的合并单元格
        MergerRegion(sheetCreat, sheet);
        int firstRow = sheet.getFirstRowNum();
        int lastRow = sheet.getLastRowNum();
        for (int i = firstRow; i <= lastRow; i++) {
          // 创建新建excel Sheet的行
          HSSFRow rowCreat = sheetCreat.createRow(i);
          // 取得源有excel Sheet的行
          HSSFRow row = sheet.getRow(i);
          // 单元格式样
          int firstCell = row.getFirstCellNum();
          int lastCell = row.getLastCellNum();
          for (int j = firstCell; j < lastCell; j++) {
            // 自动适应列宽 貌似不起作用
            //sheetCreat.autoSizeColumn(j);
            System.out.println(row.getCell(j));
            rowCreat.createCell(j);
            String strVal ="";
            if (row.getCell(j)==null) {
             
            }else{
              strVal = removeInternalBlank(row.getCell(j).getStringCellValue());
            }
            rowCreat.getCell(j).setCellValue(strVal);
          }
        }
      }
    }
    FileOutputStream fileOut = new FileOutputStream(toPath + excelName + ".xls");
    wbCreat.write(fileOut);
    fileOut.close();
  }

  /**
  * 复制原有sheet的合并单元格到新创建的sheet
  *
  * @param sheetCreat
  *      新创建sheet
  * @param sheet
  *      原有的sheet
  */
  private static void MergerRegion(HSSFSheet sheetCreat, HSSFSheet sheet) {
    int sheetMergerCount = sheet.getNumMergedRegions();
    for (int i = 0; i < sheetMergerCount; i++) {
      Region mergedRegionAt = sheet.getMergedRegionAt(i);
      sheetCreat.addMergedRegion(mergedRegionAt);
    }

  }

  /**
  * 去除字符串内部空格
  */
  public static String removeInternalBlank(String s) {
    // System.out.println("bb:" + s);
    Pattern p = Pattern.compile("\\s*|\t|\r|\n");
    Matcher m = p.matcher(s);
    char str[] = s.toCharArray();
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < str.length; i++) {
      if (str[i] == ' ') {
        sb.append(' ');
      } else {
        break;
      }
    }
    String after = m.replaceAll("");
    return sb.toString() + after;
  }
}

最新文章

  1. 判断ie?
  2. TortoiseSVN的bin目录下面没有svn.exe
  3. 理解javascript中的原型模式
  4. apache2.2 虚拟主机配置
  5. 一个好用的PHP验证码类
  6. 【BZOJ】【2818】Gcd
  7. [spring]启动时报错:NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I
  8. 关于ecshop中jquery与js冲突解决的方案
  9. 使用微软Remote Desktop 手机远程控制 windows
  10. 2016 C++及系统软件技术大会亮点
  11. 解决 Oracle 11g 不能导出空表的问题
  12. boost库使用说明
  13. 老李推荐:第14章4节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-端口转发 3
  14. Java 得到磁盘以及内存信息
  15. [Noi2013]矩阵游戏
  16. ruby中顶层定义的方法究竟放在哪里?
  17. 各个模块的刷新js
  18. 关于go get安装git golang项目时报错的处理办法
  19. P2464 [SDOI2008]郁闷的小J
  20. Shiro自定义过滤器

热门文章

  1. Python3解leetcode Valid Parentheses
  2. 4种方法实现C#无标题栏窗体的移动
  3. fastIO模板
  4. SpringMVC使用fastjson自定义Converter支持返回jsonp格式(转)
  5. 洛谷P3382 【模板】三分法(三分找凹凸点)
  6. 截图上传功能 imageAreaselect
  7. 解码H264文件的一些基础知识
  8. codevs1052 地鼠游戏
  9. spring事物回滚机制 (事务异常回滚,捕获异常不抛出就不会回滚)
  10. Python随笔---return与print,全局变量与局部变量