2019独角兽企业重金招聘Python工程师标准>>>

package org.bigdata.framework.admin.web.util;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;import org.apache.poi.hssf.usermodel.HSSFCell;
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.XSSFWorkbook;/*** 导入的jar包* * poi-3.8-beta3-20110606.jar* * poi-ooxml-3.8-beta3-20110606.jar* * poi-examples-3.8-beta3-20110606.jar* * poi-excelant-3.8-beta3-20110606.jar* * poi-ooxml-schemas-3.8-beta3-20110606.jar* * poi-scratchpad-3.8-beta3-20110606.jar* * xmlbeans-2.3.0.jar* * dom4j-1.6.1.jar* * jar包官网下载地址:http://poi.apache.org/download.html* * 下载poi-bin-3.8-beta3-20110606.zipp* */public class ReadExcel {/** 总行数 */private int totalRows = 0;/** 总列数 */private int totalCells = 0;/** 错误信息 */private String errorInfo;/** 构造方法 */public ReadExcel() {}/*** * @描述:得到总行数* * @时间:2012-08-29 下午16:27:15* * @参数:@return* * @返回值:int*/public int getTotalRows() {return totalRows;}/*** * @描述:得到总列数* * @参数:@return* * @返回值:int*/public int getTotalCells() {return totalCells;}/*** * @描述:得到错误信息* * @参数:@return* * @返回值:String*/public String getErrorInfo() {return errorInfo;}/*** * @描述:验证excel文件* * @参数:@param filePath 文件完整路径* * @参数:@return* * @返回值:boolean*/public boolean validateExcel(String filePath) {/** 检查文件名是否为空或者是否是Excel格式的文件 */if (filePath == null || !(WDWUtil.isExcel2003(filePath) || WDWUtil.isExcel2007(filePath))) {errorInfo = "文件名不是excel格式";return false;}/** 检查文件是否存在 */File file = new File(filePath);if (file == null || !file.exists()) {errorInfo = "文件不存在";return false;}return true;}/*** * @描述:根据文件名读取excel文件* * @参数:@param filePath 文件完整路径* * @参数:@return* * @返回值:List*/public List<List<String>> read(String filePath) {List<List<String>> dataLst = new ArrayList<List<String>>();InputStream is = null;try {/** 验证文件是否合法 */if (!validateExcel(filePath)) {System.out.println(errorInfo);return null;}/** 判断文件的类型,是2003还是2007 */boolean isExcel2003 = true;if (WDWUtil.isExcel2007(filePath)) {isExcel2003 = false;}/** 调用本类提供的根据流读取的方法 */File file = new File(filePath);is = new FileInputStream(file);dataLst = read(is, isExcel2003);is.close();} catch (Exception ex) {ex.printStackTrace();} finally {if (is != null) {try {is.close();} catch (IOException e) {is = null;e.printStackTrace();}}}/** 返回最后读取的结果 */return dataLst;}/*** * @描述:根据流读取Excel文件* * @参数:@param isExcel2003* * @参数:@return* * @返回值:List*/public List<List<String>> read(InputStream inputStream, boolean isExcel2003) {List<List<String>> dataLst = null;try {/** 根据版本选择创建Workbook的方式 */Workbook wb = null;if (isExcel2003) {wb = new HSSFWorkbook(inputStream);} else {wb = new XSSFWorkbook(inputStream);}dataLst = read(wb);} catch (IOException e) {e.printStackTrace();}return dataLst;}/*** * @描述:读取数据* * @时间:2012-08-29 下午16:50:15* * @参数:@param Workbook* * @参数:@return* * @返回值:List<List<String>>*/@SuppressWarnings("all")private List<List<String>> read(Workbook wb) {List<List<String>> dataLst = new ArrayList<List<String>>();/** 得到第一个shell */Sheet sheet = wb.getSheetAt(0);/** 得到Excel的行数 */this.totalRows = sheet.getPhysicalNumberOfRows();/** 得到Excel的列数 */if (this.totalRows >= 1 && sheet.getRow(0) != null) {this.totalCells = sheet.getRow(0).getPhysicalNumberOfCells();}/** 循环Excel的行 */for (int r = 0; r < this.totalRows; r++) {Row row = sheet.getRow(r);if (row == null) {continue;}List<String> rowLst = new ArrayList<String>();/** 循环Excel的列 */for (int c = 0; c < this.getTotalCells(); c++) {Cell cell = row.getCell(c);String cellValue = "";if (null != cell) {// 以下是判断数据的类型switch (cell.getCellType()) {case HSSFCell.CELL_TYPE_NUMERIC: // 数字cellValue = cell.getNumericCellValue() + "";break;case HSSFCell.CELL_TYPE_STRING: // 字符串cellValue = cell.getStringCellValue();break;case HSSFCell.CELL_TYPE_BOOLEAN: // BooleancellValue = cell.getBooleanCellValue() + "";break;case HSSFCell.CELL_TYPE_FORMULA: // 公式cellValue = cell.getCellFormula() + "";break;case HSSFCell.CELL_TYPE_BLANK: // 空值cellValue = "";break;case HSSFCell.CELL_TYPE_ERROR: // 故障cellValue = "非法字符";break;default:cellValue = "未知类型";break;}}rowLst.add(cellValue);}/** 保存第r行的第c列 */dataLst.add(rowLst);}return dataLst;}/*** * @描述:main测试方法* * @参数:@param args* * @参数:@throws Exception* * @返回值:void*/public static void main(String[] args) throws Exception {ReadExcel poi = new ReadExcel();List<List<String>> list = poi.read("D:/资料/交通知识服务系统/3.数据/中文科技报告.xls");if (list != null) {for (int i = 0; i < list.size(); i++) {System.out.print("第" + (i+1) + "行");List<String> cellList = list.get(i);for (int j = 0; j < cellList.size(); j++) {// System.out.print("    第" + (j + 1) + "列值:");System.out.print("    " + cellList.get(j));}System.out.println();}}}}/*** * @描述:工具类* */class WDWUtil {/*** * @描述:是否是2003的excel,返回true是2003* * @参数:@param filePath 文件完整路径* * @参数:@return* * @返回值:boolean*/public static boolean isExcel2003(String filePath) {return filePath.matches("^.+\\.(?i)(xls)$");}/*** * @描述:是否是2007的excel,返回true是2007* * @参数:@param filePath 文件完整路径* * @参数:@return* * @返回值:boolean*/public static boolean isExcel2007(String filePath) {return filePath.matches("^.+\\.(?i)(xlsx)$");}}

转载于:https://my.oschina.net/Tsher2015/blog/1514507

读取EXCEL文件内容相关推荐

  1. 使用POI读取excel文件内容

    1.前言 项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两个工具.这里我们介绍使用POI实现读取excel文档. 2.代码实例: ...

  2. 通用读取Excel文件内容的模板设计

    Excel格式文件是最为常用的文件之一,在我们开发的软件中,一般需要把一些报表或表格导出为Excel格式文件,也需要读取Excel格式文件中表格数据.因此,Excel格式文件也成为不同软件间数据交换的 ...

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

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

  4. php读取excel文件_PHP如何读取excel文件内容?

    在PHP中可以使用PHPExcelReader或者PHPExcel来读取Excel文件内容,其读取内容的语句代码如"$objPHPExcel->getActiveSheet()-> ...

  5. Java 读取excel文件内容插入到数据库

    Java读写Excel的包是Apache POI. JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel ...

  6. panda读取excel文件内容时出错,提示excel表格不能被指定

    panda读取excel文件内容时出错,提示exc表格不能被指定,详细内容如下: Excel file format cannot be determined, you must specify an ...

  7. 【框架思路】python如何读取excel文件内容?如何获取excel文件的路径及sheet名称?

    转载请注明作者和出处:美二 https://blog.csdn.net/qq_32654897/article/details/88579713 一.背景说明 在自动化项目中,有时候测试用例会放在ex ...

  8. Java 读取 Excel 文件内容, 根据 pdf 模板动态生成对应的 pdf 文件

    1. 下载 adobe acrobat https://www.cr173.com/soft/11135.html 2. 编辑 pdf 模板 1用 acrobat 打开 pdf 编辑模板 添加表单元素 ...

  9. linux c编程获取excel文件内容,c读取excel文件内容

    如何用C语言实现读取excel文件中的数据呢? 要做的是在Linux环境下使用C语言实现快速读取excel文件并保存成文本格式基本思路 基础实现方法同上篇文章<直接通过ODBC读.写Excel表 ...

  10. PHP读取Excel文件内容

    项目需要读取Excel的内容,从百度搜索了下,主要有两个选择,第一个是PHPExcelReader,另外一个是PHPExcel. PHPExcelReader比较轻量级,仅支持Excel的读取,实际上 ...

最新文章

  1. 一段按页自动滚动文字或图片的Js代码
  2. 关于vue中Cannot read property 'length' of undefined 导致:数据不显示问题【自己经验参考】
  3. 致谢!华为全联接2020精彩回顾
  4. 2015年10月18日-10月24日课程作业(HA Cluster)
  5. 冒泡排序及优化(Java实现)
  6. 将xml文件打包进dll(或exe)
  7. Android之实现 A/B分区更新固件
  8. KVM虚拟机在线扩展磁盘空间
  9. 2021年危险化学品经营单位安全管理人员考试报名及危险化学品经营单位安全管理人员作业考试题库
  10. Matlab中图形对象属性gcf使用
  11. php 设置允许跨域请求
  12. python简单实现天猫手机评论标签提取--自然语言处理
  13. 使用Google reCAPTCHA进行人机验证
  14. 五猴分桃python_五猴分桃问题
  15. android应用自启分析与S4启动列表
  16. MySQL8.0.17 - Multi-Valued Indexes 简述
  17. 采用最大连通域算法对三维医学图像分割结果做后处理
  18. 【TcaplusDB知识库】TcaplusDB进程启动介绍
  19. UE4带Alpha通道透明效果贴图的相关问题
  20. JS之replace与replaceAll

热门文章

  1. CentOS系统启动流程
  2. linux shell数据重定向(输入重定向与输出重定向)详细分析
  3. 多线程Java Socket编程示例(转)
  4. Ubuntu通过路由器上网的配置
  5. T-SQL 编码标准
  6. 访问支付宝(淘宝)首页IE自动关闭解决方案
  7. Data Lake Analytics + OSS数据文件格式处理大全
  8. 从PRISM开始学WPF(四)Prism-Module?
  9. Educational Codeforces Round 12 C. Simple Strings 贪心
  10. AE 先进的视频画面 快速释放 慢动作