1. 需求
平时经常做信息采集工作,需要把多个Excel文件中的信息统计到一个Excel文件中。如果采用人工的方法,费时费力,所以希望通过代码的方式自动实现。
2. 思路
由于每个文件采集的信息都是一样的,所以可以首先将多个文件存入一个文件夹中,然后依次读取每一个文件中数据后存入一个统一的新的Excel文件中。
3. 实现步骤
3.1 导入apache-poi-3.11下4个jar包
poi-3.11-20141221.jar
poi-ooxml-3.11-20141221.jar
poi-ooxml-schemas-3.11-20141221.jar
xmlbeans-2.6.0.jar
3.2 导入自己写的Excel工具类ExcelUtil.java
package com.laurel.main;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
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.ss.usermodel.DateUtil;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelUtil {
/**
* 创建Excel文件
* @param records 记录列表
* @param fileName 文件名(包含路径)
* @throws IOException
*/
public static void createExcel(List<String> records, String fileName) throws IOException {
// 创建Excel工作簿
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
// 创建Excel工作表
HSSFSheet hssfSheet = hssfWorkbook.createSheet("page1");
for (int i = 0; i < records.size(); i++) {
String record = records.get(i);
// 创建Excel单元行
HSSFRow hssfRow = hssfSheet.createRow(i);
String[] cells = record.split("\t");
for (int j = 0; j < cells.length; j++) {
// 创建Excel单元格
HSSFCell hssfCell = hssfRow.createCell(j);
// 为单元格赋值
hssfCell.setCellValue(cells[j].toString());
}
}
// 创建Excel文件
OutputStream os = new FileOutputStream(fileName);
hssfWorkbook.write(os);
os.close();
}
/**
* 从Excel2010文件读取数据
* @param filePath 文件名(包含路径)
* @return 记录列表
* @throws IOException
*/
public static List<String> getDataFromExcel2010