在一个项目中,有一个需求,是把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. 通俗理解caller和callee

    caller 返回一个调用当前函数的引用: callee 返回一个正在被执行函数的引用: 举个例子: 当前有函数 a() 直接使用了caller 方法: b() 直接使用了callee方法: ca() ...

  2. cnblogs博客申请完毕,以后再这里安家落户

    cnblogs博客申请完毕,以后再这里安家落户,之前的博客就不转载了,好好搞技术,安稳过日子.

  3. jquery的ajax,请求JSON数据。

    第一个页面:1.htm <!DOCTYPE html> <html> <head> <title></title> <script t ...

  4. <转载> bat 脚本基本语法 http://blog.csdn.net/bluedusk/article/details/1500629

        bat 脚本基本语法 2007-01-25 10:31 常用命令 echo.@.call.pause.rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起. = ...

  5. Mybatis学习——resultMap使用

    在实体和数据库字段一致 时直接使用resultType时可以的. 当字段不一致时,可以使用别名.使之一致. 以下讲解使用resultMap情况. 实体Order.java package pojo; ...

  6. 2. apache整合tomcat部署集群

    apache只有处理静态事物的能力, 而tomcat的强项就是处理动态的请求,所以apache和tomcat整合相互取长补短,由apache作为入口,如果是请求静态页面或者是静态文件,由apache直 ...

  7. Flex学习笔记-Vgropu Hgroup 定义的组 表单程序。

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  8. docker pull centos慢问题的解决方案

    1.现象 如果直接docker pull centos 两个小时才down下来8M,很慢 2.解决 [root@localhost network-scripts]# cd /etc/docker [ ...

  9. TFrame bug

    delphi 10.1.2 工程里有很多fram 正确的工程文件dproj中fram的定义是 <DCCReference Include="Unit15frame.pas"& ...

  10. Tomcat命令

    如果原始内存不够用经常内存溢出,可以在catalina.bat中设置: 电脑2G内存的情况 :set JAVA_OPTS='-server -Xms1024m -Xmx1536m -XX:PermSi ...