Java 读取excel文件内容插入到数据库
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文件内容插入到数据库相关推荐
- java读取jsp文件内容_使用Java读取Excel文件内容
问题:我能用Java读取一个Excel文件吗?如果能,怎么做? 回答:是的,可以用Java读取Microsoft Excel文件.微软提供了一个Excel的ODBC驱动程序,因此我们就可以使用JDBC ...
- Java 读取 Excel 文件内容, 根据 pdf 模板动态生成对应的 pdf 文件
1. 下载 adobe acrobat https://www.cr173.com/soft/11135.html 2. 编辑 pdf 模板 1用 acrobat 打开 pdf 编辑模板 添加表单元素 ...
- [JAVA] java读取Excel文件内容,jxl(Excel 2003)
读取Excel的另外一个开源jar包,jxl,这个之前系统中使用过,但是仅仅是解析Excel2003版的数据,无法解析更高版本的Excel文件. Apache POI可以解析Excel兼容版和高级版, ...
- JAVA读取excel数据(插入oracle数据库)
本实例做的是读取execl(只能读取.xls的execl,即只能读取03版的),如果是.xlsx类型的话 手工转化一下即可,应用的jar包是apache的poi系类的jar包和ojdbc14.jar的 ...
- Java多线程读取excel文件_解决springboot 多线程使用MultipartFile读取excel文件内容报错问题...
springboot项目开启多线程 启动类加注解开启 @EnableAsync,实现类方法加注解 @Async 前端页面 报错信息 java.io.FileNotFoundException: C:\ ...
- java读取excel中的数据存到数据库
1.导入jar包 <!-- poi --> <dependency> <groupId>org.apache.poi< ...
- 使用POI读取excel文件内容
1.前言 项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两个工具.这里我们介绍使用POI实现读取excel文档. 2.代码实例: ...
- php 读取 excel 文件并上传数据库
1.首先接收前端发来的excel //接收前台文件public function addExcel(){//接收前台文件$ex = $_FILES['file'];//重设置文件名$filename ...
- 通用读取Excel文件内容的模板设计
Excel格式文件是最为常用的文件之一,在我们开发的软件中,一般需要把一些报表或表格导出为Excel格式文件,也需要读取Excel格式文件中表格数据.因此,Excel格式文件也成为不同软件间数据交换的 ...
最新文章
- 深入理解CSS计数器
- MFC单文档程序加载web网站和html文件
- PL/SQL学习笔记(四)
- 安装虚拟机 Network boot from AMD Operating System no...
- 27.垃圾收集器(Serial收集器、ParNew收集器、Parallel收集器、Parallel Old 收集器、CMS收集器、G1收集器、常用的收集器组合)
- OP07高级电路图-摘自:Reza Moghim
- Android实现点击两次返回键退出
- 计算机基础知识与程序设计二,计算机基础与程序设计.doc
- PyQt5系列(三)Python3.x AttributeError: module 'string' has no attribute 'maketrans'错误解决
- vue 数组中嵌套的对象添加新属性--页面更新
- python创建数据集_python 生成环形人工数据集
- electron 读取文件夹内容_读写本地文件
- 《走出强迫的泥潭——森田疗法指导集锦》
- 论文笔记4 --(ReID)Re-ranking Person Re-identification with k-reciprocal Encoding
- 酷的计算机名字,女生超酷的群名大全
- HAL库配置F407ZE DDS AD9854
- 学计算机能把照片还原吗,要在计算机上恢复的1英寸照片的图像大小是多少? -恢复照片图像尺寸恢复...
- 期货开户不同客户手续费不同
- Windows Server 2008 R2安装openSSH服务
- 跟着尚硅谷学大数据(二)MapReduce