java读取excel表格的方法
程序员文章站
2022-07-08 18:06:47
在使用java的时候,希望从excel中读取到一些单元格的数据,供大家参考,具体内容如下1.java读取的excel的api这里用到了一个叫jxl的api如下:...
在使用java的时候,希望从excel中读取到一些单元格的数据,供大家参考,具体内容如下
1.java读取的excel的api
这里用到了一个叫jxl的api如下:
<dependency> <groupid>net.sourceforge.jexcelapi</groupid> <artifactid>jxl</artifactid> <version>2.6.12</version> </dependency>
在java中需要去导入一些类去读取excel
import jxl.workbook; //java读取excel表使用的类 import jxl.cell; //java读取表格里的单元格的类 import jxl.sheet; //java读取的工作铺的类
首先:
创建一个file 去读取文件(我以d盘redisinput文件下的gpsinfo.xls文件为例)
注意:不能够读取xlsx后缀的excel文件,否则会报错: unable to recognize ole stream
file inputfile = new file("d:\\redisinput\\gpsinfo.xls");
使用字符流去接file的数据
fileinputstream fileinputstream = new fileinputstream(inputfile);
workbook去接fileinputstream
workbook workbook = workbook.getworkbook(fileinputstream);
这样读取到了excel文件,但是需要去判断是哪一个工作簿,要用到sheet类
sheet readfirst = workbook.getsheet(0);
如果getsheet(0)那么就是去访问第一个工作簿里的数据,然后可以在sheet类中看有多少有效行和有效列
int rows = readfirst.getrows(); int clomns = readfirst.getcolumns(); system.out.println("row:" + rows); system.out.println("clomns:" + clomns);
如果想看每个单元格的数据可以使用一个双重循环去读取每一个有效单元格里数据
for(int i =1;i<rows;i++) { for(int j =1;i<rows;i++) { cell cell = readfirst.getcell(j,i); //j在前 i 在后是根据excel下标来判断的 string s = cell.getcontents(); system.out.println("cell"+s); }
这样就把所有的有效单元格输出了。
2.读到的单元格进行打印
但是我想让它按照我想要的格式进行输出,比如 excel表中有sim卡 ,车牌号,终端号,我希望让它能够生成一个特有的格式让我使用比如:
转成-》这种格式的数据
所以一个完整过程如下:
public class analysisexcel { workbook workbook = null; file inputfile = new file("d:\\redisinput\\gpsinfo.xls"); file outputfile =new file("d:\\redisinput\\gpsinfo.txt"); public void toanalysisexcel() { // unable to recognize ole stream 不支持xlsx格式 支持xls格式 try { fileinputstream fileinputstream = new fileinputstream(inputfile); workbook = workbook.getworkbook(fileinputstream); fileoutputstream fileoutputstream = new fileoutputstream(outputfile); bufferedoutputstream bw = new bufferedoutputstream(fileoutputstream); //输出语句 sheet readfirst = workbook.getsheet(0); int rows = readfirst.getrows(); int clomns = readfirst.getcolumns(); system.out.println("row:" + rows); system.out.println("clomns:" + clomns); for(int i =1;i<rows;i++) { cell[] cells = readfirst.getrow(i); //循环得到每一行的单元格对象 //根据每一个单元格对象的到里面的值 string brandnum= cells[0].getcontents(); string devicecode = cells[1].getcontents(); string sim =cells[2].getcontents(); system.out.println("rand:"+brandnum+",vehiclenum:"+devicecode+",sim:"+sim); //将得到的值放在一个我需要的格式的string对象中 string output = "\n"+sim+"\n" + "{\n" + " \"brandcolor\": 500000,\n" + " \"brandnumber\": \""+brandnum+"\",\n" + " \"devicecode\": \""+devicecode+"\",\n" + " \"simcard\": \""+sim+"\"\n" + "}"+ "\n"; //write and flush到 我需要的文件中去,flush后才能成功 byte[] outputbyte = new string(output).getbytes(); bw.write(outputbyte); bw.flush(); } } catch (filenotfoundexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } catch (biffexception e) { e.printstacktrace(); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
Python使用win32com模块实现数据库表结构自动生成word表格的方法
-
python opencv 读取本地视频文件 修改ffmpeg的方法
-
Python 保存矩阵为Excel的实现方法
-
PHP使用imagick读取PDF生成png缩略图的两种方法
-
Python采用raw_input读取输入值的方法
-
PHP读取txt文本文件并分页显示的方法
-
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
-
layui问题之渲染数据表格时,仅出现10条数据的解决方法
-
详解java中的深拷贝和浅拷贝(clone()方法的重写、使用序列化实现真正的深拷贝)
-
python调用java的jar包方法