我在测试的时候经常需要去改动case,如果把所有case直接写在单元测试中,非常冗余,我希望可以直接从excel去读取我的测试数据,经过几次试验终于成功了,读取excel主要借助poi jar包,源码如下所示。poi jar包下载地址http://down.51cto.com/data/2012838

ps:因为测试数据仅string类型已够用,所以代码只支持string类型的cell 内容,如果是想支持其他数据类型,需要进一步对cell内容进行判断,此处略过~

package p1;import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;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.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class readExcelIntoTxt {public static void main(String[] args) throws Exception {String filePath = "f:\\ReadExcel.xlsx";File file = new File(filePath);int startRowIndex = 0;//从第二行开始读取,第一行默认为列名String[][] content = getData(file, startRowIndex);//从excel读取数据放到“行*列”的二维数组中BufferedWriter writer = new BufferedWriter(new FileWriter(new File("F:\\WriteTxt.txt")));   //将生成的二维数组写入txtint rowLength = content.length;for(int i=0;i<rowLength;i++) {      for(int j=0;j<content[i].length;j++) {System.out.print(content[i][j]+"\t"); writer.write(content[i][j]+"\t");                     }writer.write("\r\n");System.out.println();}writer.close();}public static String[][] getData(File file, int startRowIndex)throws FileNotFoundException, IOException {     // 打开文件     Workbook wb;Sheet st;Row row;Cell cell;FileInputStream fis = new FileInputStream(file);BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));try{                 wb = new HSSFWorkbook(fis);    //.xls读取             }catch(Exception e){        wb = new XSSFWorkbook(bis);//.xlsx读取}List<String[]> rowArray = new ArrayList<String[]>();//所有行组成的数组int maxColumnSize = 0;//二维数组的列最大值for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) //遍历sheet{st = wb.getSheetAt(sheetIndex);for (int rowIndex = startRowIndex; rowIndex <= st.getLastRowNum(); rowIndex++)//遍历行{row = st.getRow(rowIndex);boolean isCellValueNull = true;if (row == null) //空行跳过{                      continue;         }int columnSize = row.getLastCellNum();  //每行的列数if(columnSize>maxColumnSize)//为确保数组的列容量{     maxColumnSize = columnSize;                        }String[] rowValues = new String[columnSize];//每行的值,一维数组Arrays.fill(rowValues, "");//填充默认空值                  for (short columnIndex = 0; columnIndex < columnSize; columnIndex++) //遍历列{String value = "";cell = row.getCell(columnIndex);if (cell != null && cell.getCellType()==XSSFCell.CELL_TYPE_STRING) {          value = cell.getStringCellValue();    }if (cell != null && cell.getCellType()==XSSFCell.CELL_TYPE_NUMERIC) {          value = new DecimalFormat("0").format(cell.getNumericCellValue());}if (value.trim().equals("")) //单元格内容为空则跳过{continue;}rowValues[columnIndex] = value;isCellValueNull = false;}if (!isCellValueNull)//空行则跳过,包括仅有空格的行{rowArray.add(rowValues);}}}bis.close();fis.close();String[][] rowColumnArray = new String[rowArray.size()][maxColumnSize];for (int i = 0; i < rowColumnArray.length; i++) {rowColumnArray[i] = (String[]) rowArray.get(i);           }return rowColumnArray;}       }

转载于:https://blog.51cto.com/smileyes/1626369

java如何读取excel文件相关推荐

  1. java 从excel中读取数据_在Java中读取Excel文件的内容和导出数据到Excel文件中

    转自www.chianjavaworld.net 原作者:SonyMusic 读:rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 在Java ...

  2. java代码读取excel文件_Java 读取excel 文件流代码实例

    这篇文章主要介绍了Java 读取excel 文件流代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 public static vo ...

  3. java代码读取excel文件,同时兼容2003和2007

    后台服务器需要一个读取excel文件的工具,查了些资料,很多不能同时兼容2003和2007,整理了一下,加了一个判断,现在能同时兼容2003和2007,并且可以选择从表格的第几行开始读取.主要用到了a ...

  4. Java多线程读取excel文件_解决springboot 多线程使用MultipartFile读取excel文件内容报错问题...

    springboot项目开启多线程 启动类加注解开启 @EnableAsync,实现类方法加注解 @Async 前端页面 报错信息 java.io.FileNotFoundException: C:\ ...

  5. java POI 读取Excel文件 将图片、表格生成到PPT

    临时有个需求,要求通过读取EXCEL文件,然后通过文件名称去给定的文件夹内查找图片,并将图片写入PPT中,详情以表格的形式写到图片右侧,每张图片一页PPT.效果如图所示: 用到的jar包如下(mave ...

  6. java poi读取excel文件(xlsx)

    读取excel文件的方法有许多种,这篇文章主要描述通过poi读取excel文件. 先maven导入jar包 <dependency><groupId>org.apache.po ...

  7. java获取excel文件第一行_java - 在Java中读取Excel文件,但第一行除外 - 堆栈内存溢出...

    我正在尝试从使用xlsx文件的JasperReport模板自动创建报告,我用来从excel文件读取的方法是这样的: String[] columnNames = new String[]{" ...

  8. java中读取excel数据类型_在Java中读取Excel文件的内容

    利用JExcelApi来动态生成excel文档 首先,请到http://www.andykhan.com/jexcelapi/index.html下载java excel api,主页上同时有比较详细 ...

  9. java 读取excel 文件 Unable to recognize OLE stream 错误

    使用 java 代码读取 excel 文件代码时报错如下: jxl.read.biff.BiffException: Unable to recognize OLE stream     at jxl ...

最新文章

  1. 程序员的35个坏习惯,你有几条?
  2. 福布斯:混合现实未来的八大应用场景
  3. day002-HTML知识点总结:浏览器兼容性之指定IE浏览器使用chrome内核渲染页面
  4. caffe学习:通过研读classification.cpp了解如何使用caffe模型
  5. 个人成长:拉开你和同龄人差距的100个顶级认知
  6. 一个简单的动态web服务器
  7. 南开大学计算机本科论文,南开大学本科毕业论文设计-南开大学教务处主页.DOC...
  8. python生成任意n阶的三对角矩阵
  9. 使用ASP的优势和劣势
  10. 使用jQuery快速高效制作网页交互特效(1)
  11. 清除数据库中大于10W行的垃圾历史数据
  12. 《信号与系统学习笔记》—信号与系统的时域和频域特性(二)
  13. pyqt项目——测温仪数据采集软件
  14. 2022年终总结与2023新年展望
  15. 计算机垃圾桶桌面,电脑桌面比垃圾桶还乱?一分钟轻松快速整理你的电脑桌面...
  16. 《最好的告别》是有尊严的离开
  17. 默认网关和静态路由表
  18. 微信小程序入门ColorUI组件库使用方法
  19. 我的瞎搞开发工具集以及对一些工具的比较
  20. java IO流之一 IO流介绍

热门文章

  1. LeetCode 200. Number of Islands--c++ dfs解法
  2. Linux内核实现原子性操作cmpxchg指令的理解
  3. leetcode--笔记——120. 三角形最小路径和
  4. Springboot [日志管理LogBack]
  5. UI调试神器 for ios:Reveal的使用与破解
  6. 2021年九月最新Java面试必背八股文,338道最新大厂架构面试题
  7. ajax调用接口很慢,nodejs 请求接口在高并发下耗时很大,而单个请求非常快
  8. Linux qfile中文文件名,QFile无法打开包含unicode字符的文件名
  9. linux c 判断文件打开文件,Linux 用C语言判断文件和文件夹
  10. hbase1.1.1 连接集群_除了HAProxy,RabbitMQ集群还可以这样用