Java读写Excel的包是Apache POI。

JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为它是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。下面是一个全部代码后面是分步解析

package com.myFirstSpring.test;
import org.apache.poi.ss.usermodel.*;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.sun.org.apache.bcel.internal.generic.RET;import java.io.File;
import java.io.FileInputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/** * @author tqf* @version 创建时间:2020-4-7 下午4:10:18 * 类说明:读取excel文件内容*/public class ReadExcel {public static void main(String[] args) {readExcel("D:\\测试生成Excel文件\\withoutHead2.xls");//readExcel2();}public static void readExcel(String path) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");File file = new File(path);FileInputStream fis = null;Workbook workBook = null;if (file.exists()) {try {fis = new FileInputStream(file);workBook = WorkbookFactory.create(fis);int numberOfSheets = workBook.getNumberOfSheets(); //获取有几个sheetList<read_excel>list = new ArrayList<>();// sheet工作表for (int s = 0; s <numberOfSheets ; s++) { //numberOfSheetsSheet sheetAt = workBook.getSheetAt(s);//获取工作表名称String sheetName = sheetAt.getSheetName();System.out.println("工作表名称:" + sheetName);// 获取当前Sheet的总行数int rowsOfSheet = sheetAt.getPhysicalNumberOfRows();System.out.println("当前表格的总行数:" + rowsOfSheet);// 第一行Row row0 = sheetAt.getRow(0);int physicalNumberOfCells = sheetAt.getRow(0).getPhysicalNumberOfCells();String[] title = new String[physicalNumberOfCells];for (int i = 0; i < physicalNumberOfCells; i++) {title[i] = row0.getCell(i).getStringCellValue();System.out.print(title[i] + "  ");    }System.out.println();for (int r = 1; r < rowsOfSheet; r++) {Row row = sheetAt.getRow(r);//获取的第几行数据int cellCount = row.getPhysicalNumberOfCells(); //获取总列数  //遍历每一列  read_excel excel = new read_excel();for (int c = 0; c < cellCount; c++) {  Cell cell = row.getCell(c);  int cellType = cell.getCellType();  String cellValue = null;  switch(cellType) {  case Cell.CELL_TYPE_STRING: //文本  cellValue = cell.getStringCellValue();  break;  case Cell.CELL_TYPE_NUMERIC: //数字、日期  if(DateUtil.isCellDateFormatted(cell)) {  cellValue = sdf.format(cell.getDateCellValue()); //日期型  }  else {  cellValue = String.valueOf(cell.getNumericCellValue()); //数字  }  break;  case Cell.CELL_TYPE_BOOLEAN: //布尔型  cellValue = String.valueOf(cell.getBooleanCellValue());  break;  case Cell.CELL_TYPE_BLANK: //空白  cellValue = cell.getStringCellValue();  break;  case Cell.CELL_TYPE_ERROR: //错误  cellValue = "错误";  break;  case Cell.CELL_TYPE_FORMULA: //公式  cellValue = "错误";  break;  default:  cellValue = "错误";  }  if(cellValue == "" || "错误".equals(cellValue)){System.out.println("第" + r + "行,第"+c+"列[" + title[c] + "]数据错误!");return;}//下面是被获取到的数据存放在用户实体类 read_excelswitch (c) {case 0:excel.setId(cellValue);break;case 1:excel.setName(cellValue);break;case 2:excel.setAge(Integer.parseInt(cellValue));break;case 3:excel.setTime(cellValue);break;default:break;}System.out.print(cellValue + "  ");    }  list.add(excel); //获取的数据存放在list 最后进行添加到数据库操作System.out.println();  }  System.out.println();}if (fis != null) {fis.close();}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}} else {System.out.println("文件不存在!");}}/** * 读取Excel测试,兼容 Excel 2003/2007/2010 */  public static void readExcel2()  {  SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");  try {  //同时支持Excel 2003、2007  File excelFile = new File("D:\\测试生成Excel文件\\withoutHead2.xls"); //创建文件对象  FileInputStream is = new FileInputStream(excelFile); //文件流  Workbook workbook = WorkbookFactory.create(is); //这种方式 Excel 2003/2007/2010 都是可以处理的  int sheetCount = workbook.getNumberOfSheets();  //Sheet的数量  //遍历每个Sheet  for (int s = 0; s < sheetCount; s++) {  Sheet sheet = workbook.getSheetAt(s);  int rowCount = sheet.getPhysicalNumberOfRows(); //获取总行数  //遍历每一行  for (int r = 0; r < rowCount; r++) {  Row row = sheet.getRow(r);  int cellCount = row.getPhysicalNumberOfCells(); //获取总列数  //遍历每一个单元格  for (int c = 0; c < cellCount; c++) {  Cell cell = row.getCell(c);  int cellType = cell.getCellType();  String cellValue = null;//在读取单元格内容前,设置所有单元格中内容都是字符串类型cell.setCellType(Cell.CELL_TYPE_STRING);//按照字符串类型读取单元格内数据cellValue = cell.getStringCellValue();/*在这里可以对每个单元格中的值进行二次操作转化*/System.out.print(cellValue + "    ");  }  System.out.println();  }  }  }  catch (Exception e) {  e.printStackTrace();  }  }public void stop(){for (int i = 0;i<10;i++){for (int j = 0; j<10; j++){System.out.println(j);if (i<10){System.out.println("retuen 跳出循环");return;}}}}
}

1 、创建Workbook对象

//path是你要读取的excel文件路径 或者上传的excel文件
File file = new File(path);
FileInputStream fis = null;
Workbook workBook = null;
fis = new FileInputStream(file);
workBook = WorkbookFactory.create(fis);

2 、获取第一张表

int numberOfSheets = workBook.getNumberOfSheets(); //获取有几个sheet 遍历
for (int s = 0; s <numberOfSheets ; s++) { //numberOfSheetsSheet sheetAt = workBook.getSheetAt(s);
}

3 、获取sheet表中的总行数

 //获取工作表名称
String sheetName = sheetAt.getSheetName();
ystem.out.println("工作表名称:" + sheetName);
// 获取当前Sheet的总行数
int rowsOfSheet = sheetAt.getPhysicalNumberOfRows();
System.out.println("当前表格的总行数:" + rowsOfSheet);

4 、获取sheet表中的总列数

for (int r = 1; r < rowsOfSheet; r++) {Row row = sheetAt.getRow(r);//获取的第几行数据int cellCount = row.getPhysicalNumberOfCells(); //获取总列数
}

异常描述:在导入excel的时候在获取excel单元格数据的时候会出现Cannot get a text value from a numeric cell的异常抛出。
异常原因:poi读取excel单元格的数据,cell有不同的数据类型(CELL_TYPE_NUMERIC,CELL_TYPE_STRING,CELL_TYPE_FORMULA),如果cell中的数据是数值的话,如果你没有给他设置cell的类型的话。默认会认为是CELL_TYPE_NUMERICl类型,如果从一个NUMBER类型的Cell使用.cell.getStringCellValue()读取出一个字符串就会出错。
解决的方法:在读取数据之前,设置cell的类型为CELL_TYPE_STRING; cell.setCellType(Cell.CELL_TYPE_STRING);

好了以上写的关于读取excel文件内容插入到数据库的方法,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果对你有用 点赞评论收藏 加关注^_^

Java 读取excel文件内容插入到数据库相关推荐

  1. java读取jsp文件内容_使用Java读取Excel文件内容

    问题:我能用Java读取一个Excel文件吗?如果能,怎么做? 回答:是的,可以用Java读取Microsoft Excel文件.微软提供了一个Excel的ODBC驱动程序,因此我们就可以使用JDBC ...

  2. Java 读取 Excel 文件内容, 根据 pdf 模板动态生成对应的 pdf 文件

    1. 下载 adobe acrobat https://www.cr173.com/soft/11135.html 2. 编辑 pdf 模板 1用 acrobat 打开 pdf 编辑模板 添加表单元素 ...

  3. [JAVA] java读取Excel文件内容,jxl(Excel 2003)

    读取Excel的另外一个开源jar包,jxl,这个之前系统中使用过,但是仅仅是解析Excel2003版的数据,无法解析更高版本的Excel文件. Apache POI可以解析Excel兼容版和高级版, ...

  4. JAVA读取excel数据(插入oracle数据库)

    本实例做的是读取execl(只能读取.xls的execl,即只能读取03版的),如果是.xlsx类型的话 手工转化一下即可,应用的jar包是apache的poi系类的jar包和ojdbc14.jar的 ...

  5. Java多线程读取excel文件_解决springboot 多线程使用MultipartFile读取excel文件内容报错问题...

    springboot项目开启多线程 启动类加注解开启 @EnableAsync,实现类方法加注解 @Async 前端页面 报错信息 java.io.FileNotFoundException: C:\ ...

  6. java读取excel中的数据存到数据库

    1.导入jar包 <!-- poi -->         <dependency>             <groupId>org.apache.poi< ...

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

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

  8. php 读取 excel 文件并上传数据库

    1.首先接收前端发来的excel //接收前台文件public function addExcel(){//接收前台文件$ex = $_FILES['file'];//重设置文件名$filename ...

  9. 通用读取Excel文件内容的模板设计

    Excel格式文件是最为常用的文件之一,在我们开发的软件中,一般需要把一些报表或表格导出为Excel格式文件,也需要读取Excel格式文件中表格数据.因此,Excel格式文件也成为不同软件间数据交换的 ...

最新文章

  1. 深入理解CSS计数器
  2. MFC单文档程序加载web网站和html文件
  3. PL/SQL学习笔记(四)
  4. 安装虚拟机 Network boot from AMD Operating System no...
  5. 27.垃圾收集器(Serial收集器、ParNew收集器、Parallel收集器、Parallel Old 收集器、CMS收集器、G1收集器、常用的收集器组合)
  6. OP07高级电路图-摘自:Reza Moghim
  7. Android实现点击两次返回键退出
  8. 计算机基础知识与程序设计二,计算机基础与程序设计.doc
  9. PyQt5系列(三)Python3.x AttributeError: module 'string' has no attribute 'maketrans'错误解决
  10. vue 数组中嵌套的对象添加新属性--页面更新
  11. python创建数据集_python 生成环形人工数据集
  12. electron 读取文件夹内容_读写本地文件
  13. 《走出强迫的泥潭——森田疗法指导集锦》
  14. 论文笔记4 --(ReID)Re-ranking Person Re-identification with k-reciprocal Encoding
  15. 酷的计算机名字,女生超酷的群名大全
  16. HAL库配置F407ZE DDS AD9854
  17. 学计算机能把照片还原吗,要在计算机上恢复的1英寸照片的图像大小是多少? -恢复照片图像尺寸恢复...
  18. 期货开户不同客户手续费不同
  19. Windows Server 2008 R2安装openSSH服务
  20. 跟着尚硅谷学大数据(二)MapReduce

热门文章

  1. win10 查看蓝牙无线收发器状态 未修复
  2. c语言求单链表倒数第k个节点,链表中倒数第k个结点
  3. 图像处理软件开发记录(六) 图像特效(浮雕、怀旧)
  4. APS高级排产助力传统工艺品行业搭乘数字化快车,实现转型升级
  5. SDUT-2592 画笑脸
  6. vulhub中漏洞复现1
  7. UPC-6467 Many Formulas(深搜暴力)
  8. 小说项目如何利用音频平台引流?
  9. 产品追溯+NFT一种实现思路
  10. Phtoshop 无缝连续贴图制作