当前位置:首页 > 后端开发 > 正文

java中怎么导入excel

Java中导入Excel,常用Apache POI库,需先添加依赖,再通过WorkbookFactory创建Workbook对象,获取Sheet后遍历Row和Cell读取数据,同时处理异常

Java中导入Excel文件,通常涉及到读取Excel文件中的数据并将其转换为Java对象或数据结构,以下是几种常见的方法及其详细步骤:

使用Apache POI库

Apache POI是一个强大的Java库,用于读写Microsoft Office格式的文件,包括Excel,它支持Excel 97-2003(.xls)和Excel 2007+(.xlsx)格式。

步骤:

  1. 添加依赖:需要在项目中添加Apache POI的依赖,如果使用Maven,可以在pom.xml中添加以下依赖:

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>5.2.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.3</version>
    </dependency>
  2. 读取Excel文件:使用POI读取Excel文件的基本步骤如下:

    java中怎么导入excel  第1张

    import org.apache.poi.ss.usermodel.;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    public class ExcelImporter {
        public static void main(String[] args) {
            FileInputStream fileInputStream = null;
            Workbook workbook = null;
            try {
                fileInputStream = new FileInputStream(new File("path/to/excel.xlsx"));
                workbook = new XSSFWorkbook(fileInputStream);
                Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表
                for (Row row : sheet) {
                    for (Cell cell : row) {
                        switch (cell.getCellType()) {
                            case STRING:
                                System.out.print(cell.getStringCellValue() + "t");
                                break;
                            case NUMERIC:
                                System.out.print(cell.getNumericCellValue() + "t");
                                break;
                            case BOOLEAN:
                                System.out.print(cell.getBooleanCellValue() + "t");
                                break;
                            default:
                                System.out.print(" ");
                        }
                    }
                    System.out.println();
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (workbook != null) workbook.close();
                    if (fileInputStream != null) fileInputStream.close();
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        }
    }

使用JExcelApi库

JExcelApi是一个简单的API,主要用于处理Excel 97-2003(.xls)格式的文件,它不支持.xlsx格式。

步骤:

  1. 添加依赖:将JExcelApi的JAR文件添加到项目中,可以从官方网站下载。

  2. 读取Excel文件:使用JExcelApi读取Excel文件的基本步骤如下:

    import java.io.File;
    import java.io.IOException;
    import jxl.Cell;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.read.biff.BiffException;
    public class JExcelImporter {
        public static void main(String[] args) {
            try {
                Workbook workbook = Workbook.getWorkbook(new File("path/to/excel.xls"));
                Sheet sheet = workbook.getSheet(0); // 获取第一个工作表
                for (int i = 0; i < sheet.getRows(); i++) {
                    for (int j = 0; j < sheet.getColumns(); j++) {
                        Cell cell = sheet.getCell(j, i);
                        System.out.print(cell.getContents() + "t");
                    }
                    System.out.println();
                }
            } catch (BiffException | IOException e) {
                e.printStackTrace();
            }
        }
    }

使用OpenCSV库(间接方法)

虽然OpenCSV主要用于读取CSV文件,但可以通过将Excel文件另存为CSV格式,然后使用OpenCSV来读取数据,这种方法适用于简单的数据导入需求。

步骤:

  1. 添加依赖:将OpenCSV的JAR文件添加到项目中,可以从官方网站下载。

  2. 读取CSV文件:使用OpenCSV读取CSV文件的基本步骤如下:

    import com.opencsv.CSVReader;
    import java.io.FileReader;
    import java.io.IOException;
    public class OpenCSVImporter {
        public static void main(String[] args) {
            try (CSVReader reader = new CSVReader(new FileReader("path/to/excel.csv"))) {
                String[] nextLine;
                while ((nextLine = reader.readNext()) != null) {
                    for (String token : nextLine) {
                        System.out.print(token + "t");
                    }
                    System.out.println();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

相关问答FAQs

Q1:Apache POI和JExcelApi有什么区别?
A1:Apache POI支持Excel 97-2003和Excel 2007+格式,功能强大且社区活跃;而JExcelApi仅支持Excel 97-2003格式,功能相对简单,适合处理老版本的Excel文件。

Q2:如何处理Excel中的合并单元格?
A2:在使用Apache POI时,可以通过sheet.getMergedRegions()方法获取所有合并单元格的区域,然后根据需要处理这些区域中的数据,可以遍历所有合并单元格区域,并读取其中第一个单元格的值作为整个区域的值

0