Java 读取Excel 文件内容
在一个项目中,有一个需求,是把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 文件内容的更多相关文章
- java读取excel文件内容
1.导入依赖JAR包 <!-- jxl 操作excel --> <dependency> <groupId>org.jxls</groupId> < ...
- 使用POI读取excel文件内容
1.前言 项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两个工具.这里我们介绍使用POI实现读取excel文档. 2.代码实例: ...
- java读取excel文件的代码
如下内容段是关于java读取excel文件的内容,应该能对各朋友有所用途. package com.zsmj.utilit; import java.io.FileInputStream;import ...
- 关于解决java读取excel文件遇空行抛空指针的问题 !
关于解决java读取excel文件遇空行抛空指针的问题 ! package exceRead; import java.io.File; import java.io.FileInputStream; ...
- java读取excel文件数据导入mysql数据库
这是我来公司的第二周的一个小学习任务,下面是实现过程: 1.建立maven工程(方便管理jar包) 在pom.xml导入 jxl,mysql-connector 依赖 可以在maven仓库搜索 2.建 ...
- JAVA 读取excel文件成List<Entity>
package com.fsinfo.common.utils; import com.fsinfo.modules.enterprise.entity.EnterpriseRecordEntity; ...
- Java读取Excel文件的几种方法
Java读取 Excel 文件的常用开源免费方法有以下几种: 1. JDBC-ODBC Excel Driver 2. jxl.jar 3. jcom.jar 4. poi.jar 简单介绍: 百度文 ...
- PHP读取Excel文件内容
PHP读取Excel文件内容 项目需要读取Excel的内容,从百度搜索了下,主要有两个选择,第一个是PHPExcelReader,另外一个是PHPExcel. PHPExcelReader比较 ...
- java读取txt文件内容
package read; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public ...
随机推荐
- try or install Ubuntu on MeegoPad T01
Ref: Install Ubuntu on Meego Pad T01 with a Live ISO Image MeegoPad T01 has recently been shown to b ...
- uva-10132-排序
题意: 有很多文件,碎成了俩片,问,原来的文件是什么,如果有多个答案,任意一个答案就行,输入2N个字符串,拼接成N个文件. 直接排序,正确的答案一定是某个长度最短的和某个最长的连在一起. #inclu ...
- Java图片压缩
package com.test; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGIma ...
- leetcode509
public class Solution { public int Fib(int N) { ) { ; } ) { ; } else { List<int> list = new Li ...
- Image Base64 Datasnap Image delphi与c#互相兼容识别
delphi用,不能与java.c#互相识别. procedure TServerMethods.UpdateDoc(ItemID : integer; doc : TStream); delphi用 ...
- 爬虫--Scrapy-参数等级和请求传参
日志等级 日志等级(种类): ERROR:错误 WARNING:警告 INFO:一般信息 DEBUG:调试信息(默认) 指定输入某一中日志信息: settings:LOG_LEVEL = ‘ERROR ...
- confusing c++ 重写 与 重定义 记录1
class parent { public: void f() { cout << "parent f()" << endl; } void f(int i ...
- js 弹窗的实现
原理: 1. 点击按钮,触发窗口显示,遮罩层显示,并设置窗口的位置 2. 为弹出的窗口绑定鼠标滚动事件和视窗改变事件 3.点击关闭按钮,弹窗消失,遮罩层消失 html 代码: <!DOCTYPE ...
- 【动态规划】最大子段和问题,最大子矩阵和问题,最大m子段和问题
http://blog.csdn.net/liufeng_king/article/details/8632430 1.最大子段和问题 问题定义:对于给定序列a1,a2,a3……an,寻找它 ...
- How to Pronounce Work vs. Walk
How to Pronounce Work vs. Walk Share Tweet Share Tagged With: Comparison If you’re confused about th ...