java如何读取excel文件
我在测试的时候经常需要去改动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文件相关推荐
- java 从excel中读取数据_在Java中读取Excel文件的内容和导出数据到Excel文件中
转自www.chianjavaworld.net 原作者:SonyMusic 读:rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 在Java ...
- java代码读取excel文件_Java 读取excel 文件流代码实例
这篇文章主要介绍了Java 读取excel 文件流代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 public static vo ...
- java代码读取excel文件,同时兼容2003和2007
后台服务器需要一个读取excel文件的工具,查了些资料,很多不能同时兼容2003和2007,整理了一下,加了一个判断,现在能同时兼容2003和2007,并且可以选择从表格的第几行开始读取.主要用到了a ...
- Java多线程读取excel文件_解决springboot 多线程使用MultipartFile读取excel文件内容报错问题...
springboot项目开启多线程 启动类加注解开启 @EnableAsync,实现类方法加注解 @Async 前端页面 报错信息 java.io.FileNotFoundException: C:\ ...
- java POI 读取Excel文件 将图片、表格生成到PPT
临时有个需求,要求通过读取EXCEL文件,然后通过文件名称去给定的文件夹内查找图片,并将图片写入PPT中,详情以表格的形式写到图片右侧,每张图片一页PPT.效果如图所示: 用到的jar包如下(mave ...
- java poi读取excel文件(xlsx)
读取excel文件的方法有许多种,这篇文章主要描述通过poi读取excel文件. 先maven导入jar包 <dependency><groupId>org.apache.po ...
- java获取excel文件第一行_java - 在Java中读取Excel文件,但第一行除外 - 堆栈内存溢出...
我正在尝试从使用xlsx文件的JasperReport模板自动创建报告,我用来从excel文件读取的方法是这样的: String[] columnNames = new String[]{" ...
- java中读取excel数据类型_在Java中读取Excel文件的内容
利用JExcelApi来动态生成excel文档 首先,请到http://www.andykhan.com/jexcelapi/index.html下载java excel api,主页上同时有比较详细 ...
- java 读取excel 文件 Unable to recognize OLE stream 错误
使用 java 代码读取 excel 文件代码时报错如下: jxl.read.biff.BiffException: Unable to recognize OLE stream at jxl ...
最新文章
- 程序员的35个坏习惯,你有几条?
- 福布斯:混合现实未来的八大应用场景
- day002-HTML知识点总结:浏览器兼容性之指定IE浏览器使用chrome内核渲染页面
- caffe学习:通过研读classification.cpp了解如何使用caffe模型
- 个人成长:拉开你和同龄人差距的100个顶级认知
- 一个简单的动态web服务器
- 南开大学计算机本科论文,南开大学本科毕业论文设计-南开大学教务处主页.DOC...
- python生成任意n阶的三对角矩阵
- 使用ASP的优势和劣势
- 使用jQuery快速高效制作网页交互特效(1)
- 清除数据库中大于10W行的垃圾历史数据
- 《信号与系统学习笔记》—信号与系统的时域和频域特性(二)
- pyqt项目——测温仪数据采集软件
- 2022年终总结与2023新年展望
- 计算机垃圾桶桌面,电脑桌面比垃圾桶还乱?一分钟轻松快速整理你的电脑桌面...
- 《最好的告别》是有尊严的离开
- 默认网关和静态路由表
- 微信小程序入门ColorUI组件库使用方法
- 我的瞎搞开发工具集以及对一些工具的比较
- java IO流之一 IO流介绍
热门文章
- LeetCode 200. Number of Islands--c++ dfs解法
- Linux内核实现原子性操作cmpxchg指令的理解
- leetcode--笔记——120. 三角形最小路径和
- Springboot [日志管理LogBack]
- UI调试神器 for ios:Reveal的使用与破解
- 2021年九月最新Java面试必背八股文,338道最新大厂架构面试题
- ajax调用接口很慢,nodejs 请求接口在高并发下耗时很大,而单个请求非常快
- Linux qfile中文文件名,QFile无法打开包含unicode字符的文件名
- linux c 判断文件打开文件,Linux 用C语言判断文件和文件夹
- hbase1.1.1 连接集群_除了HAProxy,RabbitMQ集群还可以这样用