首页 > 基础资料 博客日记
javaExcel 操作工具类(ExcelUtils)
2024-11-06 03:00:07基础资料围观26次
场景
JavaExcel操作工具类(ExcelUtils)可以在以下场景中发挥作用:
-
数据导入:可以将Excel文件中的数据导入到Java应用程序中。例如,可以将Excel中的学生信息导入到学生管理系统中,或者将Excel中的销售数据导入到库存管理系统中。
-
数据导出:可以将Java应用程序中的数据导出到Excel文件中。例如,可以将某个数据库查询的结果导出为Excel文件,方便用户查看和分析数据。
-
数据转换:可以将Excel文件中的数据转换为Java对象,并在Java应用程序中进行进一步的处理和分析。例如,可以将Excel中的员工信息转换为Employee对象,并进行各种业务操作。
-
数据校验:可以对Excel文件中的数据进行校验,以确保数据的准确性和完整性。例如,可以检查Excel中的日期格式、数字格式、数据范围等是否符合要求,并提供相应的错误提示。
-
数据操作:可以对Excel文件中的数据进行增删改操作。例如,可以在Excel中添加新的数据、更新已有的数据或删除不需要的数据。
通过使用ExcelUtils工具类,开发人员可以方便地处理Excel文件,进行数据的导入、导出、转换、校验和操作,提高开发效率和代码的可读性。同时,ExcelUtils还可以提供一些常用的辅助方法,如获取Excel文件中的sheet列表、获取特定单元格的值、设置单元格的样式等,使得操作更加灵活和便捷。JavaExcel操作工具类(ExcelUtils)可以在以下场景中发挥作用:
-
数据导入:可以将Excel文件中的数据导入到Java应用程序中。例如,可以将Excel中的学生信息导入到学生管理系统中,或者将Excel中的销售数据导入到库存管理系统中。
-
数据导出:可以将Java应用程序中的数据导出到Excel文件中。例如,可以将某个数据库查询的结果导出为Excel文件,方便用户查看和分析数据。
-
数据转换:可以将Excel文件中的数据转换为Java对象,并在Java应用程序中进行进一步的处理和分析。例如,可以将Excel中的员工信息转换为Employee对象,并进行各种业务操作。
-
数据校验:可以对Excel文件中的数据进行校验,以确保数据的准确性和完整性。例如,可以检查Excel中的日期格式、数字格式、数据范围等是否符合要求,并提供相应的错误提示。
-
数据操作:可以对Excel文件中的数据进行增删改操作。例如,可以在Excel中添加新的数据、更新已有的数据或删除不需要的数据。
通过使用ExcelUtils工具类,开发人员可以方便地处理Excel文件,进行数据的导入、导出、转换、校验和操作,提高开发效率和代码的可读性。同时,ExcelUtils还可以提供一些常用的辅助方法,如获取Excel文件中的sheet列表、获取特定单元格的值、设置单元格的样式等,使得操作更加灵活和便捷。
ExcelUtils依赖
首先,确保引入 Apache POI 依赖库,可以在 Maven 项目中的 pom.xml
文件中添加以下依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
ExcelUtils 工具类实现
package com.example.utils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* ExcelUtils 工具类
* 提供 Excel 文件的读写操作方法
*/
public class ExcelUtils {
/**
* 读取 Excel 文件中的所有数据
*
* @param filePath Excel 文件路径
* @return 包含所有行数据的列表,每行是一个 String 数组
* @throws IOException 文件读写异常
*/
public static List<String[]> readExcel(String filePath) throws IOException {
List<String[]> dataList = new ArrayList<>();
try (FileInputStream fis = new FileInputStream(filePath);
Workbook workbook = new XSSFWorkbook(fis)) {
Sheet sheet = workbook.getSheetAt(0); // 读取第一个工作表
for (Row row : sheet) {
int lastCellNum = row.getLastCellNum();
String[] rowData = new String[lastCellNum];
for (int i = 0; i < lastCellNum; i++) {
Cell cell = row.getCell(i);
rowData[i] = getCellValueAsString(cell);
}
dataList.add(rowData);
}
}
return dataList;
}
/**
* 将数据写入 Excel 文件
*
* @param filePath Excel 文件路径
* @param data 要写入的数据,每行是一个 String 数组
* @throws IOException 文件读写异常
*/
public static void writeExcel(String filePath, List<String[]> data) throws IOException {
try (Workbook workbook = new XSSFWorkbook()) {
Sheet sheet = workbook.createSheet("Sheet1"); // 创建一个新工作表
for (int rowIndex = 0; rowIndex < data.size(); rowIndex++) {
Row row = sheet.createRow(rowIndex);
String[] rowData = data.get(rowIndex);
for (int colIndex = 0; colIndex < rowData.length; colIndex++) {
Cell cell = row.createCell(colIndex);
cell.setCellValue(rowData[colIndex]);
}
}
try (FileOutputStream fos = new FileOutputStream(filePath)) {
workbook.write(fos);
}
}
}
/**
* 读取指定单元格的值
*
* @param filePath Excel 文件路径
* @param sheetIndex 工作表索引,从 0 开始
* @param rowIndex 行索引,从 0 开始
* @param colIndex 列索引,从 0 开始
* @return 单元格的值,以字符串形式返回
* @throws IOException 文件读写异常
*/
public static String readCell(String filePath, int sheetIndex, int rowIndex, int colIndex) throws IOException {
try (FileInputStream fis = new FileInputStream(filePath);
Workbook workbook = new XSSFWorkbook(fis)) {
Sheet sheet = workbook.getSheetAt(sheetIndex);
Row row = sheet.getRow(rowIndex);
if (row != null) {
Cell cell = row.getCell(colIndex);
return getCellValueAsString(cell);
}
return null;
}
}
/**
* 设置指定单元格的值
*
* @param filePath Excel 文件路径
* @param sheetIndex 工作表索引,从 0 开始
* @param rowIndex 行索引,从 0 开始
* @param colIndex 列索引,从 0 开始
* @param value 要设置的值
* @throws IOException 文件读写异常
*/
public static void writeCell(String filePath, int sheetIndex, int rowIndex, int colIndex, String value) throws IOException {
try (FileInputStream fis = new FileInputStream(filePath);
Workbook workbook = new XSSFWorkbook(fis)) {
Sheet sheet = workbook.getSheetAt(sheetIndex);
Row row = sheet.getRow(rowIndex);
if (row == null) {
row = sheet.createRow(rowIndex);
}
Cell cell = row.getCell(colIndex);
if (cell == null) {
cell = row.createCell(colIndex);
}
cell.setCellValue(value);
try (FileOutputStream fos = new FileOutputStream(filePath)) {
workbook.write(fos);
}
}
}
/**
* 获取单元格的字符串值
*
* @param cell 单元格对象
* @return 单元格的字符串值
*/
private static String getCellValueAsString(Cell cell) {
if (cell == null) {
return "";
}
switch (cell.getCellType()) {
case STRING:
return cell.getStringCellValue();
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
return cell.getDateCellValue().toString();
} else {
return Double.toString(cell.getNumericCellValue());
}
case BOOLEAN:
return Boolean.toString(cell.getBooleanCellValue());
case FORMULA:
return cell.getCellFormula();
case BLANK:
return "";
default:
return cell.toString();
}
}
/**
* 创建新工作表并写入数据
*
* @param filePath Excel 文件路径
* @param sheetName 工作表名称
* @param data 要写入的数据,每行是一个 String 数组
* @throws IOException 文件读写异常
*/
public static void createSheetWithData(String filePath, String sheetName, List<String[]> data) throws IOException {
try (FileInputStream fis = new FileInputStream(filePath);
Workbook workbook = new XSSFWorkbook(fis)) {
Sheet sheet = workbook.createSheet(sheetName);
for (int rowIndex = 0; rowIndex < data.size(); rowIndex++) {
Row row = sheet.createRow(rowIndex);
String[] rowData = data.get(rowIndex);
for (int colIndex = 0; colIndex < rowData.length; colIndex++) {
Cell cell = row.createCell(colIndex);
cell.setCellValue(rowData[colIndex]);
}
}
try (FileOutputStream fos = new FileOutputStream(filePath)) {
workbook.write(fos);
}
}
}
}
主要功能简介
-
读取 Excel 文件:
readExcel
:读取 Excel 文件中的所有数据,返回一个包含每行数据的List<String[]>
。
-
写入 Excel 文件:
writeExcel
:将数据写入 Excel 文件中,以新工作簿的形式写入。
-
读取指定单元格:
readCell
:读取 Excel 中指定单元格的值,返回字符串格式。
-
设置指定单元格值:
writeCell
:设置 Excel 中指定单元格的值,保存对文件的修改。
-
创建新工作表并写入数据:
createSheetWithData
:在已有的 Excel 文件中创建一个新工作表,并写入数据。
使用示例
import com.example.utils.ExcelUtils;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
public class ExcelUtilsTest {
public static void main(String[] args) {
String filePath = "test.xlsx";
// 写入数据到 Excel
List<String[]> data = Arrays.asList(
new String[]{"Name", "Age", "City"},
new String[]{"Alice", "30", "New York"},
new String[]{"Bob", "25", "Los Angeles"},
new String[]{"Charlie", "35", "Chicago"}
);
try {
ExcelUtils.writeExcel(filePath, data);
System.out.println("Data written to Excel file successfully.");
// 读取数据从 Excel
List<String[]> readData = ExcelUtils.readExcel(filePath);
for (String[] row : readData) {
System.out.println(Arrays.toString(row));
}
// 读取指定单元格
String cellValue = ExcelUtils.readCell(filePath, 0, 1, 1);
System.out.println("Cell Value at (1,1): " + cellValue);
// 写入指定单元格
ExcelUtils.writeCell(filePath, 0, 1, 1, "28");
System.out.println("Cell Value at (1,1) updated.");
// 创建新工作表并写入数据
ExcelUtils.createSheetWithData(filePath, "NewSheet", data);
System.out.println("New sheet
created with data.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
结论
ExcelUtils
工具类通过封装 Apache POI 提供的 Excel 操作功能,简化了 Excel 文件的读写操作。无论是读取整个表格的数据、操作单个单元格,还是创建新工作表,这些方法都能大大提高开发效率和代码可读性。ExcelUtils
对于处理日常 Excel 文件操作非常有用,是一个便捷且功能全面的工具类。在项目中使用时,只需引入 Apache POI 依赖,即可在各种场景下轻松操作 Excel 文件。
总结
ExcelUtils 是一个 Java 的操作 Excel 的工具类。它提供了一些方法来读写 Excel 文件,方便对 Excel 文件进行操作。
该工具类主要包含以下方法:
readExcel():用于读取 Excel 文件,将文件中的数据转化为一个二维数组。
writeExcel():用于写入数据到 Excel 文件,将二维数组中的数据写入到指定的单元格中。
createExcel():用于创建一个新的 Excel 文件,并可以设置文件的名称和文件路径。
getCellData():用于获取指定单元格的数据,可以通过指定行和列的索引来获取。
setCellData():用于设置指定单元格的数据,可以通过指定行和列的索引来设置。
使用 ExcelUtils 可以方便地读取、写入和创建 Excel 文件。可以通过调用相关的方法来实现对 Excel 文件的操作。
该工具类还提供了一些其他的方法,如获取 Excel 文件的行数和列数,设置单元格的格式等。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: