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;
  }
}

转载于:https://www.cnblogs.com/zhang-boke/p/7243605.html

java 实现 excel sheet 拷贝到另一个Excel文件中 poi相关推荐

  1. python excel sheet个数_python得到一个excel的全部sheet标签值方法

    python读取excel莫个页签sheets()行数,并且获取里在线分享等,哪位好心人士对于python操作excel熟练请帮忙解 不要在表达爱时那么无力,却又在表达伤害时如此锋利. 如何返使用xl ...

  2. python合并excel工作簿_使用Python将多个excel的多个sheet页合并到一个excel

    使用Python将多个excel的多个sheet页合并到一个excel ##读取Excel文件 import xlrd ##将文本写入excel文件 import xlsxwriter ##读取exc ...

  3. 读取指定文件夹里多个excel表,并将所有excel表数据整合到一个excel中

    1.找出指定文件夹里的所有文件 #-*- encoding: utf-8 -*-# 找出指定文件夹里的所有文件 import osfilePath = 'C:\\Users\\lzk\\Desktop ...

  4. java+txt+词语+次数_Java练习2--读取txt文件统计考勤次数并写入一个txt文件中

    Java练习2--读取txt文件统计考勤次数并写入一个txt文件中 Java练习2--读取txt文件统计考勤次数并写入一个txt文件中 面向对象的小练习: 文件attendance.txt中的数据为本 ...

  5. java wav合并_java – 如何将两个wav文件合并/合并到一个wav文件中?

    如果直接使用wav文件的字节,则可以在任何编程语言中使用相同的策略.对于这个例子,我假设两个源文件具有相同的比特率/ numchannels并且长度/大小相同. (如果没有,你可以在开始合并之前编辑它 ...

  6. 如何在另一个JavaScript文件中包含一个JavaScript文件?

    JavaScript中是否有类似于CSS中@import的内容,可让您在另一个JavaScript文件中包含一个JavaScript文件? #1楼 而不是在运行时添加,而是使用脚本在上传之前进行串联. ...

  7. 转:如何调用另一个python文件中的代码

    原文地址:https://www.cnblogs.com/jiuyigirl/p/7146223.html 如何调用另一个python文件中的代码 无论我们选择用何种语言进行程序设计时,都不可能只有一 ...

  8. matlab中将数据导出到Excel表格、.txt、.xml等文件中

    本人应用例子 导出效果:第一行为提示,所以在设置表格行数时需要+1,如上图 matlab官网例子 load patients.mat T = table(LastName,Age,Weight,Smo ...

  9. 把一个文件夹下的所有csv文件合并到一个csv文件中,并添加文件名作为列名

    DEAM数据集的标签如图所示,共有1802个csv文件,每首音乐的特征单独存储在一个csv文件中: 现在想要将这些csv文件合并到一个csv文件中,同时用文件名作为列名.用python代码实现如下: ...

最新文章

  1. ZooKeeper与Eureka对比
  2. sap和OA之间数值传递2(工程创建)
  3. MyBatis collection的两种形式——MyBatis学习笔记之九
  4. 学术会议 | 中国杭州举办——第21届国际语义网大会​ISWC2022 Call for Papers
  5. 服务器proc文件,特殊文件系统proc
  6. 网上购物软件的测试计划,网上购物平台购物测试计划书
  7. 迈足狂奔!铁塔公司:目前北京已建好4400多座大型5G基站
  8. [20150304]唯一索引与阻塞.txt
  9. [使用心得]maven2之m2eclipse使用手册之二m2eclipse功能介绍
  10. CCF201909-4 推荐系统(100分)【模拟】
  11. 011 使用AOP操作注解
  12. java调用jrtplib,jrtplib的文档翻译
  13. 微软漏洞导致SQL注入威胁
  14. php获取时间戳及对时间戳进行格式化处理
  15. c5 LR is at 对于空指针的定位
  16. JAV----------数组操作
  17. smb+服务器+修复,Microsoft Windows
  18. 血污夜之仪式秘密巫师实验室收集策略
  19. 主板有电无法启动_【主板不通电无法开机】主板不通电怎么修_主板通电但是开不了机...
  20. leetcode阶段总结——分割字符串类型

热门文章

  1. 多人部件解析--Towards Real World Human Parsing: Multiple-Human Parsing in the Wild
  2. Linux操作系统选择:Debian or Ubuntu
  3. git服务器查看用户信息,git 查看当前git用户_新Git用户使用方法
  4. linux mysql删除root_Linux下误删MySQL的root用户解决方法
  5. c语言英汉互译编程,用C语言编辑简单英汉互译词典.doc
  6. 编写里Linux命令解释器,linux基础教程试卷及答案
  7. C++——auto_ptr与unique_ptr
  8. 细说接口性能优化的11个小技巧
  9. Spring Cloud Alibaba 之 RPC 消息:Dubbo 与 Nacos 体系如何协同作业
  10. c 读取mysql中表中数据_c#读取MySQL数据表中的内容