在一个项目中,有一个需求,是把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. 《算法》第二章部分程序 part 3

    ▶ 书中第二章部分程序,加上自己补充的代码,包括各种优化的快排 package package01; import edu.princeton.cs.algs4.In; import edu.prin ...

  2. python中 将你的名字转化成为二进制并输出

    1 name = "吴彦祖" 2 for i in name: 3 i_by = bytes(i, encoding = "utf-8") 4 for i_bi ...

  3. Chrome(谷歌浏览器)和Firefox浏览器flash的swf文件发黑不透明问题解决方法

    一直以来看到各大网站的FLASH都是黑框框的,很好奇,难道他们不知道flash是可以设成透明的?于是用IE Tab插件浏览了下,发现人家的网页又正常,这样一来我就开始怀疑是我的Chrome有问题,于是 ...

  4. 静态属性@property

    property 作用其实把类里面的逻辑给隐藏起来(封装逻辑,让用户调用的时候感知不到你的逻辑) property实例1:class Room: def __init__(self): pass @p ...

  5. php计算程序运行时间

    这里介绍一下 microtime() 这个函数,microtime() 用的不多,但是不能不知道这个函数,它是返回当前 Unix 时间戳和微秒数.例如:echo microtime(); 会返回:0. ...

  6. PHP中汉字截取

    $len = 19; $text = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?"; echo strlen($text)<=$len ? $text ...

  7. gevent mysql

    使用gevent实现mysql并发时,每个greenlet应该独享一个mysql连接,否则,不同的greenlet之间会相互影响. ultramysql doesn't allow you to ma ...

  8. Servlet基本_WAR、デプロイ

    1.WAR.パッケージングWARはWeb Aplication Resourcesの略で.Webアプリに必要なファイルを1つのファイルにまとめて圧縮したものです.(日本では「わー」と発音の人が多い)W ...

  9. 关于maven中的快照版本(snapshot)与正式版本(release)解析。

    Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...

  10. 用crash来分析一下proc的文件访问

    一般来说,用户通过fd的传入,调用open系统调用,来获取fd,然后read的时候,通过这个fd来查找对应的file* SYSCALL_DEFINE3(open, const char __user ...