在一个项目中,有一个需求,是把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. Jnlp

    java web start解析jnlp文件,从网络宿主中,下载应用程序jar包,并运行. xxx.jnlp <?xml version="1.0" encoding=&qu ...

  2. Duboo 与springboot整合

    https://github.com/apache/incubator-dubbo-spring-boot-project 当采用properties方式时,可以用下方的注解 1.pom <de ...

  3. window(win7)下安装ubuntu14.04lts (desktop)系统

    一.前期准备 1.大于2G的U盘一个(我的系统盘制作完成后大约占1个多G的容量) 2.已下载好的Ubuntu安装文件(选择在官网下载,有32和64位选择) 3.已安装好UltraISO软件的电脑(Ul ...

  4. linux MYSQL大小写问题处理

    1)window下默认大小写不敏感,所以在window下.创建表 test后再想创建表TEST会报错.而linux下默认可以.认为是不同的两张表 2)linux创建数据库,安装完毕后 首要任务是在li ...

  5. C++中几种测试程序运行时间的方法<转>

    转的地址:https://www.cnblogs.com/silentteen/p/7532855.html 1.GetTickCount()函数 原理: GetTickCount()是获取系统启动后 ...

  6. tomcat7修改tomcat-users.xml文件,但服务器重启后又自动还原了。

    tomcat7配置用户管理权限,修改tomcat-users.xml文件 在%tomcat%目录中找到/conf/tomcat-users.xml,修改 <tomcat-users>    ...

  7. Arraylist JDk1.8扩容和遍历

    Arraylist作为最简单的集合,需要熟悉一点,记录一下---->这边主要是注意一下扩容和遍历的过程 请看以下代码 public static void main(String[] args) ...

  8. vue.js 中双向绑定的实现---初级

    1. 1 我们看到的变量,其实都不是独立的,它们都是windows对象上的属性 <!DOCTYPE html> <html lang="en"> <h ...

  9. layer.js 学习笔记

    了解到一个很好用的弹框插件,名字叫layer.js 前几天要在网页中改写alert函数,自己写了一个模态框,虽然效果出来了,但是点击关闭后,无法返回当前页面.请教大神时,说有一个叫layer.js的东 ...

  10. sourcetree 跳过注册

    https://www.cnblogs.com/lucio110/p/8192792.html