资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Java

Java读取excel的方式,一篇文章看懂(详细)

Java 更新时间: 发布时间: 计算机考试归档 最新发布

Java读取excel的方式,一篇文章看懂(详细)

目录

一、excel读取的两种方式

1.1 jxl 和 poi 的区别和选择

二、jxl 的使用

2.1 导入相关依赖

 2.2 操作

三、poi 的使用

3.1 导入相关依赖

3.2 操作

四、总结

一、excel读取的两种方式

Java中解析excel的方式,我目前知道的有两种,一种是 jxl 读取,另一种是 poi 读取

1.1 jxl 和 poi 的区别和选择

① jxl 只能解析 xls 文件,不能 解析 xlsx 文件; poi 则是可以同时兼容xls 和xlsx两种文件类型,这是要注意的第一个点;

② 这两个方法的读取方式不一样,jxl 读取的是 先读列 然后循环获取的该列每行的信息。poi 读取是 先读行,再循环获取每列的信息。如下图:

那我们应该怎么去做选择呢?如果只需要xls的解析,可以使用 jxl (因为poi蛮容易出异常的jar冲突之类的,而且读取的方式不太舒服,如果读取完还要做判断操作写入数据库,就会写的比较复杂),如果需要兼容就选择poi方式读取。

二、jxl 的使用

2.1 导入相关依赖

    net.sourceforge.jexcelapi    jxl    2.6.12

 2.2 操作

以该表为例:

package com.olio;import jxl.Sheet;import jxl.Workbook;import jxl.read.biff.BiffException;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLConnection;import java.net.URLDecoder;public class TestDemo {	public void readExcel(String path,String strURL) {		try {									// 解析路径的file文件			Workbook workbook = Workbook.getWorkbook(new File(path));			// 获取第一张工作表			Sheet sheet = workbook.getSheet(0);			// 循环获取每一行数据 因为默认第一行为标题行,我们可以从 1 开始循环,如果需要读取标题行,从 0 开始			// sheet.getRows() 获取总行数			for (int i = 1; i < sheet.getRows(); i++) {				// 获取第一列的第 i 行信息 sheet.getCell(列,行),下标从0开始				String id = sheet.getCell(0, i).getContents();				// 获取第二列的第 i 行信息				String name = sheet.getCell(1,i).getContents();				// 获取第三列的第 i 行信息				String sex = sheet.getCell(2, i).getContents();				// 获取第四列的第 i 行信息				String grade = sheet.getCell(3, i).getContents();				// 存入本地或者是存入对象等根据给人需求自己定就行,创建对象存储,然后加入集合中				// ......			}		} catch (IOException e) {			e.printStackTrace();		} catch (BiffException e) {			e.printStackTrace();		}	}}

三、poi 的使用

        在这里写的是两种版本的兼容使用的方法

3.1 导入相关依赖

                 org.apache.poi            poi            3.17                            org.apache.poi            poi-ooxml            3.17        

3.2 操作

以下图为例

package com.olio;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLConnection;import java.net.URLDecoder;public class TestDemo {	public void readExcel(String path,String strURL) {		try {						// 获取文件输入流			InputStream inputStream = new FileInputStream(path);			// 定义一个org.apache.poi.ss.usermodel.Workbook的变量			Workbook workbook = null;			// 截取路径名 . 后面的后缀名,判断是xls还是xlsx			// 如果这个判断不对,就把equals换成 equalsIgnoreCase()			if (path.substring(path.lastIndexOf("." + 1)).equals("xls")){				workbook = new HSSFWorkbook(inputStream);			}else if (path.substring(path.lastIndexOf(" . " + 1)).equals("xlsx")){				workbook = new XSSFWorkbook(inputStream);			}			// 获取第一张表			Sheet sheet = workbook.getSheetAt(0);			// sheet.getPhysicalNumberOfRows()获取总的行数			// 循环读取每一行			for (int i = 0; i < sheet.getPhysicalNumberOfRows(); i++) {				// 循环读取每一个格				Row row = sheet.getRow(i);				// row.getPhysicalNumberOfCells()获取总的列数				for (int index = 0; index < row.getPhysicalNumberOfCells(); index++) {					// 获取数据,但是我们获取的cell类型//代码上的内容自己根据实际需要自己调整就可以,这里只是展示一个样式···~					Cell cell = row.getCell(index);					// 转换为字符串类型					cell.setCellType(CellType.STRING);					// 获取得到字符串					String id = cellId.getStringCellValue();				}			}		} catch (Exception e) {			e.printStackTrace();		}	}}

四、总结

        写这篇文章的初衷是总结自己的用到的方法,然后也将网上的做了个详细的总结,一篇文章去展现出来,其实只要清楚了它的代码写法,还有读取的方式,我们就已经可以去具体操作了,至于需要存储到哪里要看自己具体的业务需求,需要做逻辑判断,就根据读取方式去操作就可以,希望这篇文章可以帮到大家

        不论是通过url获取资源,或者是path路径名的方式获取,最后都是需要用到输入流去进行给WorkBook方法做解析的,jxl 和 poi 的优缺点及全面的使用想深入研究的也可以看下面这个网站的文章

JXL开发Excel文档中文教程_西西软件资讯 (cr173.com)

今天就到这儿啦!

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1096508.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【Java读取excel的方式,一篇文章看懂(详细)】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2