java 多个excel文件合并
时间: 2023-08-29 10:13:34 浏览: 101
多个EXCEL文件合并到同一个文件
您好!很高兴能为您答问题。对于合并多个Excel文件,可以通过Java中的Apache POI库来处理。下面是一个简单的示例代码,可以实现将多个Excel文件合并到一个工作表中:
```
import java.io.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.hssf.usermodel.*;
public class ExcelMerge {
public static void main(String[] args) throws IOException {
String[] files = {"file1.xlsx", "file2.xlsx", "file3.xlsx"};
String outputFileName = "merged.xlsx";
// 创建新工作簿
Workbook mergedWorkbook = new XSSFWorkbook();
for (String fileName : files) {
// 读取Excel文件
FileInputStream inputStream = new FileInputStream(new File(fileName));
Workbook workbook = null;
if (fileName.endsWith(".xlsx")) {
workbook = new XSSFWorkbook(inputStream);
} else if (fileName.endsWith(".xls")) {
workbook = new HSSFWorkbook(inputStream);
}
// 遍历工作簿中的每个工作表
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
Sheet sheet = workbook.getSheetAt(i);
// 创建新工作表
Sheet mergedSheet = mergedWorkbook.createSheet(sheet.getSheetName() + "_" + fileName);
// 复制工作表数据到新工作表
copySheet(mergedSheet, sheet);
}
// 关闭输入流
inputStream.close();
}
// 输出合并后的文件
FileOutputStream outputStream = new FileOutputStream(outputFileName);
mergedWorkbook.write(outputStream);
mergedWorkbook.close();
outputStream.close();
}
// 复制工作表数据到新工作表
private static void copySheet(Sheet destSheet, Sheet srcSheet) {
int rowCount = srcSheet.getLastRowNum() - srcSheet.getFirstRowNum();
for (int i = 0; i <= rowCount; i++) {
Row srcRow = srcSheet.getRow(i);
Row destRow = destSheet.createRow(i);
if (srcRow != null) {
int columnCount = srcRow.getLastCellNum() - srcRow.getFirstCellNum();
for (int j = 0; j < columnCount; j++) {
Cell srcCell = srcRow.getCell(j);
Cell destCell = destRow.createCell(j);
if (srcCell != null) {
destCell.setCellValue(srcCell.getStringCellValue());
}
}
}
}
}
}
```
以上代码将多个Excel文件合并到一个工作簿中,并且新工作表的名称包含原文件名和工作表名。需要注意的是,如果合并的Excel文件中有相同的工作表名称,可能会导致数据覆盖。因此,可以在新工作表名称中添加一些前缀或后缀来避免这种情况。
阅读全文