码迷,mamicode.com
首页 > 编程语言 > 详细

Java 读写 Excel

时间:2019-10-01 20:37:34      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:rac   book   value   使用   etc   异常   无法   网上   usermode   

 

 

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

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

 

本片中就用

POI模式进行举例:

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

技术图片

 

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

 

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单的名字。

技术图片

 

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

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

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


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





 

Java 读写 Excel

标签:rac   book   value   使用   etc   异常   无法   网上   usermode   

原文地址:https://www.cnblogs.com/yqcf/p/11615880.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!