欢迎访问宙启技术站
智能推送

使用Java函数处理Excel文件:读取、写入、查询、更新等

发布时间:2023-06-19 15:31:18

Excel是一款常用的电子表格软件,而Java是一款广泛应用于开发的编程语言。在对Excel文件进行处理时,Java提供了多种操作方式,可以读取、写入、查询、更新等,为Excel文件的处理提供了很好的支持。

1. 读取Excel文件

Java提供了多种读取Excel文件数据的方式,如JXL、POI、EasyExcel等。这里以POI为例,介绍如何读取Excel文件的内容。

首先,需要引入POI的依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
</dependency>

然后,可以通过以下代码读取Excel文件的内容:

FileInputStream file = new FileInputStream(new File("file.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(0);

Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
    Row row = rowIterator.next();

    Iterator<Cell> cellIterator = row.cellIterator();
    while (cellIterator.hasNext()) {
        Cell cell = cellIterator.next();

        switch (cell.getCellType()) {
            case NUMERIC:
                System.out.print(cell.getNumericCellValue() + " ");
                break;
            case STRING:
                System.out.print(cell.getStringCellValue() + " ");
                break;
            case BOOLEAN:
                System.out.print(cell.getBooleanCellValue() + " ");
                break;
        }
    }
    System.out.println();
}

file.close();

这段代码中,使用FileInputStream和File读取Excel文件的内容,XSSFWorkbook来表示整个Excel文档,XSSFSheet来表示Excel文档中的一个表单。

使用sheet.iterator()遍历表单中所包含的所有行。对于每一行,使用row.cellIterator()遍历该行中所包含的所有单元格。在遍历每一个单元格时,使用cell.getCellType()方法获取单元格的数据类型,并针对不同的类型进行处理。

2. 写入Excel文件

除了读取Excel文件,Java也提供了多种方式来向Excel文件中写入数据,同样以POI为例,介绍如何写入Excel文件的内容。

在写入Excel文件时,需要先创建一个工作簿,再通过工作簿创建表单,最后向表单中写入数据。

XSSFWorkbook workbook = new XSSFWorkbook();

XSSFSheet sheet = workbook.createSheet("sheet1");

Object[][] data = {
        {"id", "name", "age"},
        {1, "Tom", 20},
        {2, "Jerry", 21},
        {3, "Kevin", 22},
        {4, "Lucy", 23},
        {5, "Lily", 24}
};

int rowNum = 0;
for (Object[] rowData : data) {
    Row row = sheet.createRow(rowNum++);

    int cellNum = 0;
    for (Object cellData : rowData) {
        Cell cell = row.createCell(cellNum++);
        if (cellData instanceof String) {
            cell.setCellValue((String) cellData);
        } else if (cellData instanceof Integer) {
            cell.setCellValue((Integer) cellData);
        }
    }
}

FileOutputStream file = new FileOutputStream(new File("file.xlsx"));
workbook.write(file);
file.close();

在这段代码中,使用XSSFWorkbook创建工作簿,使用createSheet方法创建表单。通过定义一个二维数组data来表示要写入的数据,使用sheet.createRow创建一个新的行,使用row.createCell创建一列,再通过cell.setCellValue来指定该单元格中的数据。最后,使用FileOutputStream来将工作簿中的数据写入到文件中。

3. 查询Excel文件

Java中可以通过多种方式对Excel文件进行查询,如通过SQL语句查询、通过遍历所有行列查询等。以下代码通过遍历所有行列来实现Excel文件的查询功能。

FileInputStream file = new FileInputStream(new File("file.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(0);

int rows = sheet.getLastRowNum();
for (int i = 0; i <= rows; i++) {
    Row row = sheet.getRow(i);
    if (row != null) {
        int cells = row.getLastCellNum();
        for (int j = 0; j < cells; j++) {
            Cell cell = row.getCell(j);
            if (cell != null) {
                switch (cell.getCellType()) {
                    case NUMERIC:
                        System.out.print(cell.getNumericCellValue() + " ");
                        break;
                    case STRING:
                        System.out.print(cell.getStringCellValue() + " ");
                        break;
                    case BOOLEAN:
                        System.out.print(cell.getBooleanCellValue() + " ");
                        break;
                }
            }
        }
        System.out.println();
    }
}

file.close();

和读取Excel文件的代码类似,使用FileInputStream和File来读取Excel文件,XSSFWorkbook来表示整个Excel文档,XSSFSheet来表示Excel文档中的一个表单。通过sheet.getLastRowNum()获取当前表单中最后一行的索引值,再通过循环遍历每一个格子,使用row.getCell获取当前行中指定列的格子,如果格子不为空,就根据格子中数据类型进行处理。

4. 更新Excel文件

Java中更新Excel文件的方法和写入Excel文件的方式类似。可以先读取Excel文件中的数据,然后修改需要修改的单元格中的值,最后写入到新文件或覆盖原来的文件中。

FileInputStream file = new FileInputStream(new File("file.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(0);

sheet.getRow(1).getCell(1).setCellValue("new value");

FileOutputStream fileOut = new FileOutputStream("file.xlsx");
workbook.write(fileOut);
fileOut.close();

这段代码中,首先通过FileInputStream和File来读取Excel文件,XSSFWorkbook来表示整个Excel文档,XSSFSheet来表示Excel文档中的一个表单。使用sheet.getRow获取指定行、getCell获取指定列的单元格,然后使用setCellValue方法更新单元格的值。

最后,使用FileOutputStream将工作簿中的数据重新写入到指定文件中,完成Excel文件的更新。

总之,Java提供了多种方式对Excel文件进行操作。无论是读取、写入、查询还是更新,都可以轻松实现。熟练掌握Excel文件的处理,能够极大提高数据的处理效率和数据分析能力。