使用Java函数处理Excel文件:读取、写入、查询、更新等
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文件的处理,能够极大提高数据的处理效率和数据分析能力。
