diff --git a/PoiUtil.java b/PoiUtil.java new file mode 100644 index 0000000..a14932b --- /dev/null +++ b/PoiUtil.java @@ -0,0 +1,62 @@ +package com.utils; // 声明工具类所在包 + +import org.apache.commons.io.FileUtils; // 导入文件工具类 +import org.apache.poi.hssf.usermodel.HSSFCell; // 导入HSSF单元格类 +import org.apache.poi.hssf.usermodel.HSSFRow; // 导入HSSF行类 +import org.apache.poi.hssf.usermodel.HSSFSheet; // 导入HSSF工作表类 +import org.apache.poi.hssf.usermodel.HSSFWorkbook; // 导入HSSF工作簿类 +import org.apache.poi.ss.usermodel.Cell; // 导入单元格接口 + +import java.io.File; // 导入文件类 +import java.io.FileOutputStream; // 导入文件输出流类 +import java.util.ArrayList; // 导入ArrayList类 +import java.util.List; // 导入List接口 + +public class PoiUtil { // POI工具类 + + // Excel导入方法 + public static List> poiImport(String url) throws Exception { + List> list = new ArrayList<>(); // 创建结果列表 + HSSFWorkbook workbook = new HSSFWorkbook(FileUtils.openInputStream(new File(url))); // 创建工作簿对象 + HSSFSheet sheet = workbook.getSheetAt(0); // 获取第一个工作表 + for (int i = 0; i < sheet.getLastRowNum()+1; i++) { // 遍历所有行 + HSSFRow row = sheet.getRow(i); // 获取当前行 + List rowlist = new ArrayList<>(); // 创建行数据列表 + for (int j = 0; j < row.getLastCellNum(); j++) { // 遍历行中所有单元格 + HSSFCell cell = row.getCell(j); // 获取当前单元格 + cell.setCellType(Cell.CELL_TYPE_STRING); // 设置单元格类型为字符串 + String value = cell.getStringCellValue(); // 获取单元格值 + rowlist.add(value); // 将值添加到行数据列表 + } + list.add(rowlist); // 将行数据添加到结果列表 + } + return list; // 返回结果列表 + } + + // Excel导出方法 + public static void poiExport(List> list, String url) throws Exception { + HSSFWorkbook workbook = new HSSFWorkbook(); // 创建工作簿对象 + HSSFSheet sheet = workbook.createSheet(); // 创建工作表 + for (int i = 0; i < list.size(); i++) { // 遍历所有行数据 + HSSFRow row = sheet.createRow(i); // 创建行 + List dataList = list.get(i); // 获取当前行数据 + for (int j = 0; j < dataList.size(); j++) { // 遍历行中所有数据 + HSSFCell cell = row.createCell(j); // 创建单元格 + cell.setCellValue(dataList.get(j)); // 设置单元格值 + } + } + FileOutputStream stream = FileUtils.openOutputStream(new File(url)); // 创建文件输出流 + workbook.write(stream); // 写入工作簿数据 + stream.close(); // 关闭输出流 + } + + // 主方法(测试用) + public static void main(String[] args) { + try { + List> lists = PoiUtil.poiImport("C:/Users/Administrator/Desktop/工作1.xls"); // 测试导入 + PoiUtil.poiExport(lists, "C:/Users/Administrator/Desktop/工作1.xls"); // 测试导出 + } catch (Exception e) { + e.printStackTrace(); // 打印异常信息 + } + } +} \ No newline at end of file