在一个项目中,有一个需求,是把excel文件的内容转换为xml格式展示。在学习如何操作的过程中,首先是如何获取excel文件,其中操作的代码如下:

1.首先是导入需要的 jar, 下载地址:https://github.com/locationbai/readExcelJar/tree/master/lib

2.代码实现:

package com.apusic;

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;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List; /**
* Created by baizhuang on 2018-11-20.
*
* dsccription: 读取本地的一个excel文档,并输出到控制台
*/
public class ReadLocalExcel { //总行数
private int totalRows = 0;
//总列数
private int totalCells = 0;
//错误信息
private String errorInfo; private ReadLocalExcel(){ } public int getTotalRows() {
return totalRows;
} public int getTotalCells() {
return totalCells;
} public String getErrorInfo() {
return errorInfo;
} //检查文件是否为excel或者为空
public boolean validateExcel(String filePath){
//检查文件格式
if (filePath==null || !(UUtil.isExcel2003(filePath) || UUtil.isExcel2007(filePath))) {
errorInfo = "不是excel格式";
return false;
}
//检查文件是否存在
File file = new File(filePath);
if(file==null || !file.exists()){
errorInfo = "文件不存在";
return false;
}
return true; } public List<List<String>> read(String filePath){
List<List<String>> dataList = new ArrayList<List<String>>();
InputStream is = null; try {
//验证文件
if(!validateExcel(filePath)){
System.out.println(errorInfo);
return null;
} //判断文件类型
boolean isExcel2003 = true;
if(UUtil.isExcel2007(filePath)){
isExcel2003 = false;
} //调用读取方法
File file = new File(filePath);
is = new FileInputStream(file);
dataList = read(is,isExcel2003);
is.close(); }catch (Exception e ){ }finally { }
return dataList;
} public List<List<String>> read(InputStream inputStream,boolean isExcel2003) throws Exception{
List<List<String>> dataLst = null; Workbook wb = null;
if(isExcel2003){
wb = new HSSFWorkbook(inputStream);
}else {
wb = new XSSFWorkbook(inputStream);
} dataLst =readWork(wb);
return dataLst;
} public List<List<String>> readWork(Workbook wb){
List<List<String>> dataList = new ArrayList<List<String>>();
//得到第一个shell
Sheet sheet =wb.getSheetAt(0);
this.totalRows = sheet.getPhysicalNumberOfRows();
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> rowList = 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: //布尔
cellValue = 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;
}
}
rowList.add(cellValue);
}
dataList.add(rowList);
}
return dataList;
} public static void main(String[] args){
ReadLocalExcel t = new ReadLocalExcel(); // List<List<String>> list = t.read("D://a.xlsx");
List<List<String>> list = t.read("D:\\a.xlsx");
if(list!=null){
System.out.println("***************************************");
for (int i=0;i<list.size();i++){
System.out.print("第"+i+"行:");
List<String> cellList = list.get(i);
for (int j=0;j<cellList.size();j++){
System.out.print(" "+cellList.get(j));
}
System.out.println();
}
System.out.println("***************************************");
} } } class UUtil{
public static boolean isExcel2003(String filePath){
return filePath.matches("^.+\\.(?i)(xls)$");
} public static boolean isExcel2007(String filePath){
return filePath.matches("^.+\\.(?i)(xlsx)$");
} }

Java 读取Excel 文件内容的更多相关文章

  1. java读取excel文件内容

    1.导入依赖JAR包 <!-- jxl 操作excel --> <dependency> <groupId>org.jxls</groupId> < ...

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

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

  3. java读取excel文件的代码

    如下内容段是关于java读取excel文件的内容,应该能对各朋友有所用途. package com.zsmj.utilit; import java.io.FileInputStream;import ...

  4. 关于解决java读取excel文件遇空行抛空指针的问题 !

    关于解决java读取excel文件遇空行抛空指针的问题 ! package exceRead; import java.io.File; import java.io.FileInputStream; ...

  5. java读取excel文件数据导入mysql数据库

    这是我来公司的第二周的一个小学习任务,下面是实现过程: 1.建立maven工程(方便管理jar包) 在pom.xml导入 jxl,mysql-connector 依赖 可以在maven仓库搜索 2.建 ...

  6. JAVA 读取excel文件成List<Entity>

    package com.fsinfo.common.utils; import com.fsinfo.modules.enterprise.entity.EnterpriseRecordEntity; ...

  7. Java读取Excel文件的几种方法

    Java读取 Excel 文件的常用开源免费方法有以下几种: 1. JDBC-ODBC Excel Driver 2. jxl.jar 3. jcom.jar 4. poi.jar 简单介绍: 百度文 ...

  8. PHP读取Excel文件内容

    PHP读取Excel文件内容   项目需要读取Excel的内容,从百度搜索了下,主要有两个选择,第一个是PHPExcelReader,另外一个是PHPExcel.   PHPExcelReader比较 ...

  9. java读取txt文件内容

    package read; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public ...

随机推荐

  1. python学习笔记_week20

    note 1.Django请求的生命周期 路由系统 -> 视图函数(获取模板+数据=>渲染) -> 字符串返回给用户 2.路由系统 /index/ -> 函数或类.as_vie ...

  2. Oracle生成关闭外键的SQL语句

    select 'alter table ' || t.table_name || ' disable constraint ' || t.constraint_name || ';' from DBA ...

  3. python内置函数使用

    print(abs(1)) #绝对值,正数就是自己 ",''])) #计算可迭代对象中是否为真,其中一个为假,就显示为假 print(all('')) # If the iterable i ...

  4. 试用bus hound来分析STM32CubeMX来生成USB_HID_Mouse工程

    Bus Hound (x64). Complements of www.perisoft.net STM32_HID_mouse Device - Device ID (followed by the ...

  5. WDA-4-ALV按钮&ICON

    1.ICON图标 AccessControlledArea (14x14) Activate (14x14) Active (14x14) AdaptationTechnical (14x14) Ad ...

  6. 2018SDIBT_国庆个人第六场

    A - A codeforces 714A Description Today an outstanding event is going to happen in the forest — hedg ...

  7. Java相关文章

    servlet/filter/listener/interceptor区别与联系 web.xml配置详解 在Eclipse中使用JUnit4进行单元测试(初级篇) 单点登录原理与简单实现 spring ...

  8. 减少mysql主从数据同步延迟

    网上给出的解决办法: 基于局域网的master/slave机制在通常情况下已经可以满足'实时'备份的要求了.如果延迟比较大,就先确认以下几个因素:1. 网络延迟2. master负载3. slave负 ...

  9. Spring事务管理——回滚(rollback-for)控制

    探讨Spring事务控制中,异常触发事务回滚原理.文章进行了6种情况下的Spring事务是否回滚. 以下代码都是基于Spring与Mybatis整合,使用Spring声明式事务配置事务方法. 1.不捕 ...

  10. wx小程序获取组件属性数据data-prop

    在微信小程序中有时会在组件上定义一些属性,使用data-来定义 <view data-idvalue="id" data-Index-Name="IndexName ...