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;
}
}
分享到:
相关推荐
应用场景:使用pandas把多个相同结构的Excel文件合并为一个。 原始数据: 相关代码: import os import pandas as pd # 将文件读取出来放一个列表里面 pwd = 'test' # 获取文件目录 # 新建列表,存放文件名 ...
Union操作符是Access中的一个重要功能,能够将多个查询结果合并到一起。在SQL视图中,我们可以使用Union操作符来合并链接的Excel文件。例如,我们可以使用以下SQL语句: ```sql SELECT * FROM [Sheet1$] UNION ...
一个可以将多个EXCEL文件合并到同一个文件EXCEL的宏插件
在IT行业中,尤其是在数据处理和自动化任务中,有时我们需要将多个Excel文件合并成一个单一的文件,以便于管理和分析大量数据。在这个场景下,使用编程语言如C#可以实现这样的功能。本文将深入探讨如何使用C#在...
标题中的“将多个excel文件合并为一个excel.docx”实际上是指将多个Excel文件合并到一个单一的Excel文件中,而不是创建一个Word文档。这个过程可以通过编写VBA(Visual Basic for Applications)宏来实现,这是一种...
今天,我们将讨论如何合并多个Excel文件的方法。 首先,让我们了解为什么需要合并多个Excel文件。例如,在工作中,我们可能需要每天、每周、每月、每年对某些数据进行统计和分析。如果我们手动复制和粘贴每个表,...
这个宏通过用户选择的多个Excel文件,将它们的工作表逐个移动到一个新的工作簿中。 #### 知识点三:理解VBA宏结构 在上述宏中,我们可以看到VBA使用了一些基本的控制结构,如`For`循环、`If`条件语句,以及对象...
在excel中打开宏编辑器,导入这个文件,执行,然后选择多个excel文件,即可将多个excel文件合并为一个文件
在日常工作和数据处理过程中,我们经常会遇到需要将多个Excel文件中的数据整合到一个文件的不同Sheet(工作表)中的需求。这种操作对于数据分析、报告汇总等场景尤为重要。例如,财务部门可能需要将不同月份的销售...
这时,使用一个专门的“合并多个Excel文件的工具”就显得尤为重要。 该工具的核心功能在于自动化地将多个独立的Excel文件合并成一个单一的文件,极大地提高了工作效率。这种工具通常具备以下特性: 1. **批量处理*...
本主题聚焦于“易语言合并多个Excel文件”,这通常涉及到数据处理和文件操作的知识点。下面我们将深入探讨这个话题。 首先,我们需要了解易语言的基本结构和语法。易语言的核心思想是“易”,它的语法规则简洁明了...
以下是一个基本的MATLAB脚本示例,演示如何将多个Excel文件读取并合并到一个新Excel文件的不同工作表中: ```matlab % 定义工作目录 dirPath = 'path/to/excel/files'; % 替换为实际Excel文件所在的目录 outFile = ...
2. 使用进程池技术:进程池技术可以将多个进程合并到一个进程池中,从而减少了系统资源的浪费。我们可以使用编程语言中的进程池库来实现此功能。 3. 使用多线程技术:多线程技术可以使得多个任务并发执行,从而提高...
通过以上步骤,你可以创建一个C#控制台应用程序,将多个Excel文件合并成一个单一的Excel文件。这不仅可以提高工作效率,还可以减少数据管理的复杂性。在实际项目中,根据具体需求,可能还需要添加更多的功能,如进度...
怎么把100多个EXCEL文件合并成一个?_EXCEL_电脑软件_编程_天涯问答_天涯社区 http://wenda.tianya.cn/question/3604d101e5cb8330
本篇将详细讲解如何将多个用Tab键分隔的TXT文件合并到一个Excel工作表中。 首先,我们要明白TXT文件是一种纯文本格式,它不包含任何格式信息,只存储文字和由特定字符(如Tab或逗号)分隔的数据。在本例中,每个TXT...
通过以上步骤,你可以在MATLAB中实现将多个Excel文件合并到一个新Excel文件的不同工作表中。这个过程不仅可以用于数据整合,还可以用于数据分析前的预处理工作,是MATLAB在处理大量表格数据时的一个实用技巧。
压缩文件中包括一个包含宏代码的Excel文件Sheet Macros.xls以及其他四个测试文件工作表 1~4。 宏的功能为(1)选中Excel表格中的某些行或列,运行某个Macro,自动根据选中的cells创建新的worksheets,worksheets的...
使用“合并查询”功能,你可以轻松地将多个Excel文件的数据并排或堆叠在一起。 5. **Power Pivot**:如果你需要进行更复杂的数据建模,可以利用Power Pivot。这是一个内置于Excel的高级数据分析工具,支持将多个...
这个“易语言源码合并多个Excel文件.rar”压缩包显然包含了用易语言编写的一个程序,其功能是合并多个Excel文件。这涉及到的知识点主要包括易语言的基本语法、文件操作、数据处理以及Excel文件格式的理解。 首先,...