java 读写 excel_Java 读写 Excel

本文介绍了使用Apache POI库在Java中读写Excel文件的方法。重点是POI的优势以及如何通过POI API创建、读取和修改Excel单元格数据。示例代码展示了如何设置和读取单元格值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前主要有两种常用的方式,jxl和POI。因为POI功能更加强大,面对大量数据时操作性能更加优于jxl,因此,在工作中一般使用POI来操作excel。

POI是Apache下的开放源码函数库,POI提供了一系列的api来供java程序员对Microsoft Office格式的文档提供读写功能。

本片中就用

POI模式进行举例:

首先工具类,读写Excel的类,Excelutil1

de5a88142fb5a343caa8487f4330436a.png

代码如下,代码基本上都是从网上抄写的,只是调试了一下,让他能使用:

package com.cailian.test.framework.utils;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.ss.usermodel.Workbook;

import org.apache.poi.ss.usermodel.WorkbookFactory;

import org.apache.poi.xssf.usermodel.XSSFCell;

import org.apache.poi.xssf.usermodel.XSSFRow;

import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**

*

*

* @author

* @version 2019年5月7日

*/

public class ExcelUtill1 {

public static void setExcleFile(String filePath, int rowNumber,int colNumber,int result, String sheetName) throws Exception {

FileInputStream ExcleFile;

System.out.println(333);

try {

// 实例化Excle文件的FileInputStream 对象;

ExcleFile = new FileInputStream(filePath);

// 实例化Excle文件的XSSFWorkbook 对象;

XSSFWorkbook ExcelWBook = new XSSFWorkbook(ExcleFile);

/*

* 实例化XSSFSheet 对象,指定ExcelFile中的sheet名称,用于后续对sheet中行和列的操作;

*

*/

XSSFSheet ExcelWSheet = ExcelWBook.getSheet(sheetName);

// 通过函数参数指定单元格的行号和列,获取指定单元格的对象;

//Cell = ExcelWSheet.getRow(row).getCell(col);

XSSFRow row = ExcelWSheet.getRow(rowNumber);

XSSFCell col =row.getCell(colNumber);

/*

* 1.如果单元格的类型为字符串类型,使用getStringCellValue();来获取单元格的内容;

* 2.如果单元格的类型为数字类型,使用getNumberricCellValue();来获取单元格的内容;

* 注意:getNumberricCellValue();返回的值为double类型,转为为字符串类型,必须在

* getNumberricCellValue();前面加上(" ")双引号,用于强制转换为String类型,不加双引号

* 则会抛错;double类型无法转换为String类型的异常;

*

*/

String CellData = col.getCellType() == XSSFCell.CELL_TYPE_STRING ? col.getStringCellValue() + ""

: String.valueOf(Math.round(col.getNumericCellValue()));

// 单元格中有内容,则可以直接调用seCellValue方法设定单元格的值

col.setCellValue(result);

// 实例化写入Excel文件的文件输出流对象

FileOutputStream fileOut = new FileOutputStream(filePath);

// 将内容写入Excel中

ExcelWBook.write(fileOut);

fileOut.flush();

fileOut.close();

} catch (Exception e) {

e.printStackTrace();

}

}

public static void setExcleFile1(String filePath, int rowNumber,int colNumber,String result, String sheetName) throws Exception {

FileInputStream ExcleFile;

System.out.println(333);

try {

// 实例化Excle文件的FileInputStream 对象;

ExcleFile = new FileInputStream(filePath);

// 实例化Excle文件的XSSFWorkbook 对象;

HSSFWorkbook ExcelWBook = new HSSFWorkbook(ExcleFile);

/*

* 实例化XSSFSheet 对象,指定ExcelFile中的sheet名称,用于后续对sheet中行和列的操作;

*

*/

HSSFSheet ExcelWSheet = ExcelWBook.getSheetAt(0);

// 通过函数参数指定单元格的行号和列,获取指定单元格的对象;

//Cell = ExcelWSheet.getRow(row).getCell(col);

HSSFRow row = ExcelWSheet.getRow(rowNumber);

HSSFCell col =row.getCell(colNumber);

/*

* 1.如果单元格的类型为字符串类型,使用getStringCellValue();来获取单元格的内容;

* 2.如果单元格的类型为数字类型,使用getNumberricCellValue();来获取单元格的内容;

* 注意:getNumberricCellValue();返回的值为double类型,转为为字符串类型,必须在

* getNumberricCellValue();前面加上(" ")双引号,用于强制转换为String类型,不加双引号

* 则会抛错;double类型无法转换为String类型的异常;

*

*/

String CellData = col.getCellType() == XSSFCell.CELL_TYPE_STRING ? col.getStringCellValue() + ""

: String.valueOf(Math.round(col.getNumericCellValue()));

// 单元格中有内容,则可以直接调用seCellValue方法设定单元格的值

col.setCellValue(result);

// 实例化写入Excel文件的文件输出流对象

FileOutputStream fileOut = new FileOutputStream(filePath);

// 将内容写入Excel中

ExcelWBook.write(fileOut);

fileOut.flush();

fileOut.close();

} catch (Exception e) {

e.printStackTrace();

}

}

// 测试了可以使用,也可以自己用自己的文件去测试

// public static void main(String[] args){

// try {

// setExcleFile1("D:/cailian_pg/测试脚本/功能测试/pg3.0/src/test/resources/data/ui/d1value/cityDataBeijing.xls",

// 2,2,"3","Sheet");

// } catch (Exception e) {

// // TODO Auto-generated catch block

// e.printStackTrace();

// }

// System.out.println(333);

// }

}

第二步使用工具类进行测试:

UI自动化测试时,要把页面上获取的某个值写入Excel中,需要获取这个值后,然后调用写入Excel的方法setExcleFile1就可以了。

调用方法时参数依次是:文件名,行数,列数,写入的值,sheet单的名字。

ef7762769ecec5f09e81f7cade09247b.png

需求是:Excel的每条用例执行后,需要把一个值写入到每一行的固定的列中。比如说是每一行的30列中。

可以方法的行用caseID,列是固定的,文件名是写死的。

如果文件名也要求是变化的,可以用配置文件。下期介绍。。。。。

第三步:运行完成时,发现那个值已经写入文件中了,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值