zoukankan      html  css  js  c++  java
  • java 实现 excel sheet 拷贝到另一个Excel文件中 poi

    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*| | | ");
        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;
      }
    }

  • 相关阅读:
    指针变量的值和指针变量地址
    定时备份docker容器中mysql的数据
    sql server表外键查询
    Go语言strings包基本操作
    centos安装字体库处理中文乱码
    codeforces 1610D
    汽车配件生产加工企业管理软件出售生产加工刹车盘、刹车鼓、刹车蹄、刹车片等企业通用
    关于document.onmousemove报错Invalid or unexpected token问题
    SilverLight支持的DataTable可以直接绑定
    我的工作我的状态
  • 原文地址:https://www.cnblogs.com/zhang-boke/p/7243605.html
Copyright © 2011-2022 走看看