`
suko
  • 浏览: 73192 次
  • 性别: Icon_minigender_1
  • 来自: 富安
社区版块
存档分类
最新评论

合并多个excel文件到一个文件

 
阅读更多
package com.ben.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.Region;

public class ExcelUtils {
	public static void main(String[] args) throws FileNotFoundException, IOException {
        String fromPath = "E:\\temp\\";// excel存放路径
        String toPath = "E:\\temp\\";// 保存新EXCEL路径
        // 新的excel 文件名
        String excelName = "total";
        // 创建新的excel
        HSSFWorkbook wbCreat = new HSSFWorkbook();
        File file = new File(fromPath);
        int index=0;
        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()+index++);
                // 复制源表中的合并单元格
                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);
                    if(row == null){
                    	continue;
                    }
                    // 单元格式样
                    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;
    }
}

分享到:
评论

相关推荐

    使用Access巧妙合并多个Excel文件

    Union操作符是Access中的一个重要功能,能够将多个查询结果合并到一起。在SQL视图中,我们可以使用Union操作符来合并链接的Excel文件。例如,我们可以使用以下SQL语句: ```sql SELECT * FROM [Sheet1$] UNION ...

    多个EXCEL文件合并到同一个文件

    一个可以将多个EXCEL文件合并到同一个文件EXCEL的宏插件

    使用python将多个excel文件合并到同一个文件的方法

    应用场景:使用pandas把多个相同结构的Excel文件合并为一个。 原始数据:   相关代码: import os import pandas as pd # 将文件读取出来放一个列表里面 pwd = 'test' # 获取文件目录 # 新建列表,存放文件名 ...

    C#合并多个Excel到一个Excel

    在IT行业中,尤其是在数据处理和自动化任务中,有时我们需要将多个Excel文件合并成一个单一的文件,以便于管理和分析大量数据。在这个场景下,使用编程语言如C#可以实现这样的功能。本文将深入探讨如何使用C#在...

    将多个excel文件合并为一个excel.docx

    标题中的“将多个excel文件合并为一个excel.docx”实际上是指将多个Excel文件合并到一个单一的Excel文件中,而不是创建一个Word文档。这个过程可以通过编写VBA(Visual Basic for Applications)宏来实现,这是一种...

    合并多个Excel文件的方法 多个文件内容简单放到一个文件里

    今天,我们将讨论如何合并多个Excel文件的方法。 首先,让我们了解为什么需要合并多个Excel文件。例如,在工作中,我们可能需要每天、每周、每月、每年对某些数据进行统计和分析。如果我们手动复制和粘贴每个表,...

    合并多个excel文件的工具

    这时,使用一个专门的“合并多个Excel文件的工具”就显得尤为重要。 该工具的核心功能在于自动化地将多个独立的Excel文件合并成一个单一的文件,极大地提高了工作效率。这种工具通常具备以下特性: 1. **批量处理*...

    易语言合并多个Excel文件

    本主题聚焦于“易语言合并多个Excel文件”,这通常涉及到数据处理和文件操作的知识点。下面我们将深入探讨这个话题。 首先,我们需要了解易语言的基本结构和语法。易语言的核心思想是“易”,它的语法规则简洁明了...

    EXCEL 多个文件合并

    EXCEL 多个文件合并

    excel,多个文件合并到一个文件的多个sheet.txt

    excel,多个文件合并到一个文件的多个sheet

    Q760776.zip 如何利用c#控制台应用程序将多个excel文件合并成一个excel文件

    通过以上步骤,你可以创建一个C#控制台应用程序,将多个Excel文件合并成一个单一的Excel文件。这不仅可以提高工作效率,还可以减少数据管理的复杂性。在实际项目中,根据具体需求,可能还需要添加更多的功能,如进度...

    POI合并多个相同的Excel或者合并Word文件

    当有多个相同格式的Excel文件需要合并时,我们可以遍历每个文件中的工作表,然后将所有数据合并到一个新的Excel文件中。这个过程涉及到的关键POI类包括`HSSFWorkbook`(用于处理.xls文件)和`XSSFWorkbook`(用于...

    怎么把100多个EXCEL文件合并成一个?

    怎么把100多个EXCEL文件合并成一个?_EXCEL_电脑软件_编程_天涯问答_天涯社区 http://wenda.tianya.cn/question/3604d101e5cb8330

    合并多个TXT数据到一个Excel中

    本篇将详细讲解如何将多个用Tab键分隔的TXT文件合并到一个Excel工作表中。 首先,我们要明白TXT文件是一种纯文本格式,它不包含任何格式信息,只存储文字和由特定字符(如Tab或逗号)分隔的数据。在本例中,每个TXT...

    如何解决打开多个excel文件建立多个进程的问题.pdf

    2. 使用进程池技术:进程池技术可以将多个进程合并到一个进程池中,从而减少了系统资源的浪费。我们可以使用编程语言中的进程池库来实现此功能。 3. 使用多线程技术:多线程技术可以使得多个任务并发执行,从而提高...

    将多个Excel文件批量导入某个Excel文件中去的VBA宏

    压缩文件中包括一个包含宏代码的Excel文件Sheet Macros.xls以及其他四个测试文件工作表 1~4。 宏的功能为(1)选中Excel表格中的某些行或列,运行某个Macro,自动根据选中的cells创建新的worksheets,worksheets的...

    利用POI合并多个Excel表

    本教程将深入探讨如何利用Apache POI库来合并多个Excel工作表,这对于处理大量数据或者整合来自不同来源的数据时非常有用。 首先,我们需要了解Apache POI的基本概念。POI提供了HSSF(Horrible Spreadsheet Format...

    将多个excel文件合并到一个excel的多个sheet中.pdf

    在这篇文章中,我们将讨论如何使用 Excel VBA宏将多个工作簿合并到一个工作簿的多个工作表中。该方法可以帮助用户快速地合并多个工作簿,提高工作效率。 方法概述 该方法使用 VBA 宏来实现工作簿的合并。宏将读取...

    matlab将多个excel读取并存到一个excel的不同sheet中

    通过以上步骤,你可以在MATLAB中实现将多个Excel文件合并到一个新Excel文件的不同工作表中。这个过程不仅可以用于数据整合,还可以用于数据分析前的预处理工作,是MATLAB在处理大量表格数据时的一个实用技巧。

    Excel多个文件合并、同时删除多个文件指定行、文件拆分

    Excel多个文件合并、同时删除多个文件指定行、文件拆分的代码

Global site tag (gtag.js) - Google Analytics