import java.io.File;
import java.io.IOException;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
/**
* 读取execl文件
*/
public class File_excel { // 测试案例绑定DataProvider后自动循环执行
@Test(dataProvider = "getData")
public void testSearch(String p1, String p2) {
System.out.println(p1 + " " + p2);
} public static Object[][] readData(String dataFile, String sheetName, int beginRowNum, int rowOffset,
int beginColumnNum, int columnOffset) {
return read(dataFile, sheetName, beginRowNum, rowOffset, beginColumnNum, columnOffset);
} // 定义数据驱动
@DataProvider(name = "getData")
public static Object[][] getData() throws IOException {
return readData("H:\\test.xls", "sheet1", 0, 0, 0, 0);
} /**
* @param dataFile
* 文件名
* @param sheetName
* excel中的sheet
* @param beginRowNum
* 开始行
* @param rowOffset
* 行偏移量
* @param beginColumnNum
* 开始列
* @param columnOffset
* 列偏移量
* @return
*/
private static Object[][] read(String dataFile, String sheetName, int beginRowNum, int rowOffset,
int beginColumnNum, int columnOffset) {
File excelFile = new File(dataFile);
Workbook wb = null;
Object[][] data = null;
try {
wb = Workbook.getWorkbook(excelFile);
Sheet sheet = wb.getSheet(sheetName);
if (sheet == null)
return null;
int rows = sheet.getRows();
int cols = sheet.getColumns();
if (rowOffset == 0) {
rowOffset = rows - beginRowNum;
} else if (rows < (beginRowNum + rowOffset)) {
rowOffset = rows - beginRowNum;
}
if (columnOffset == 0) {
columnOffset = cols - beginColumnNum;
} else if (cols < (beginColumnNum + columnOffset)) {
columnOffset = cols - beginColumnNum;
}
data = new Object[rowOffset][columnOffset];
for (int i = beginRowNum; i < beginRowNum + rowOffset; i++) {
for (int j = beginColumnNum; j < beginColumnNum + columnOffset; j++) {
// 获取单元格数据 getCell(col,row);
Cell cell = sheet.getCell(j, i);
if (cell != null) {
String celldata = cell.getContents().trim();
data[i - beginRowNum][j - beginColumnNum] = celldata;
}
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return data;
}
}

test.xls文件内容:

  

Java-Excel文件读取的更多相关文章

  1. 接口自动化测试:参数化封装(excel文件读取)

    log4j.properties文件配置 log4j.rootLogger = DEBUG,stdout,F log4j.appender.stdout = org.apache.log4j.Cons ...

  2. 项目总结06:Java Excel文件导入功能HSSFWorkbook(xls)和 XSSFWorkbook (xlsx)

    项目中碰到Excel文件打入数据功能Mark一下 package com.blue.pem.client.util; import java.io.File; import java.io.FileI ...

  3. C#操作Excel文件(读取Excel,写入Excel)

    看到论坛里面不断有人提问关于读取excel和导入excel的相关问题.闲暇时间将我所知道的对excel的操作加以总结,如今共享大家,希望给大家可以给大家带了一定的帮助.另外我们还要注意一些简单的问题1 ...

  4. C#实现从EXCEL文件读取数据到SqlServer数据库

    用第三方组件:NPOI组件实现 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用.使用 NPOI ...

  5. 如何让excel文件读取变得更简单

    今天给大家安利一款excel文件导入神器,easyexcel,官方地址:(https://github.com/alibaba/easyexcel). 在官网文档中有介绍了其性能. 从上面的性能测试可 ...

  6. 关于Npoi+excel文件读取,修改文件内容的处理方式

    因最近有需求场景,实现对文件的读写操作,又不单独生成新的文件,对于源文件的修改,做了一个简单实现,如下↓ // 要操作的excel文件路径 string fileName = Server.MapPa ...

  7. Vue项目中导入excel文件读取成js数组

    1. 安装组件 cnpm install xlsx --save 2. 代码 <template> <span> <input class="input-fil ...

  8. java属性文件读取,属性修改

    /** * 属性文件读取 * @author bestmata * */ public class CommUtil { private static Logger logger=Logger.get ...

  9. C# WPF 进度条,根据读取数据显示进度条进度,根据Excel文件读取数据,进度条样式

    后台代码: //导入 private void Border_MouseLeftButtonUp_2(object sender, MouseButtonEventArgs e) { var path ...

  10. C# .Net :Excel NPOI导入导出操作教程之将Excel文件读取并写到数据库表,示例分享

    using (FileStream fileReader = File.OpenRead(@"C:\Users\Administrator\Desktop\112.xls"))   ...

随机推荐

  1. counting elements--codility

    lesson 4: counting elements 1. FrogRiverOne 2. PermCheck 3. MissingInteger 4. MaxCounters lesson 4: ...

  2. 每30秒运行一下shell脚本

    cd /usr/local/sbin/     //存放shell脚本 目录. vim guoguosql.sh      //每30秒运行一个php文件.   文件路径为 vim /home/www ...

  3. Android 从上层到底层-----app层

    CPU:RK3288 系统:Android 5.1 功能:上层 app 控制 led 亮灭 开发板:Firefly RK3288 MainActivity.java package com.aaron ...

  4. 数据库表数据传输到Oracle方案

    方案步骤为:数据导出到文件(增量或全量),通知接口文件就绪(上传到ftp或提供下载url),接收方下载文件,解析文件并入库.Oracle需要建立对应的临时表和正式表,入库步骤为:清空临时表,批量插入数 ...

  5. year()+month() 不错的Idear

    year(发货日期)*100+month(发货日期),可以取到年份+月份(月份不到10月的,自动补0)

  6. python中break continue exit() pass区别

    1.break break是终止本次循环,比如你很多个while循环,你在其中一个while循环里写了一个break,满足条件,只会终止这个while里面的循环,程序会跳到上一层while循环继续往下 ...

  7. 列表:list[1],切片list[1:3],追加insert,修改,删除remove,del,pop,查找index,统计count,清空list.clear() 翻转list.reverse(),排序list.sort(),扩展list.extend,

    列表的定义: 列表的使用以及取值:用逗号的方式,取列表两个值,会打印出2个项目,两个项目之间自动有一个空格. 如果想取中间几个值: 请注意,如果取值1和2,那么要写[1,3],要记住这里是顾头不顾尾. ...

  8. canvas之画一个三角形

    <canvas id="canvas" width="500" height="500" style="background ...

  9. c++ 搜索二叉树 插入,删除,遍历操作

    搜索二叉树是一种具有良好排序和查找性能的二叉树数据结构,包括多种操作,本篇只介绍插入,排序(遍历),和删除操作,重点是删除操作比较复杂,用到的例子也是本人亲自画的 用到的测试图数据例子 第一.构建节点 ...

  10. 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内。以及两点间的测距功能

    权声明:本文为博主原创文章,未经博主允许不得转载. 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内.以及两点间的测距功能. 绘制多边形(蓝色) ...