废话不多说,直接上代码
excel导入的工具类

import cn.samples.common.utils.DateUtils;
import cn.samples.web.entity.BGoodsInfo;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTMarker;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;/*** @author* @version 1.0*/
public class ReadPatientExcelUtil {//总行数private static int totalRows = 0;//总条数private static int totalCells = 0;//错误信息接收器private static String errorMsg;/*** 读EXCEL文件,获取信息集合** @return*/public static List<BGoodsInfo> getExcelInfo(MultipartFile mFile) {String fileName = mFile.getOriginalFilename();//获取文件名try {if (!validateExcel(fileName)) {// 验证文件名是否合格return null;}boolean isExcel2003 = true;// 根据文件名判断文件是2003版本还是2007版本if (isExcel2007(fileName)) {isExcel2003 = false;}List<BGoodsInfo> userList = createExcel(mFile.getInputStream(), isExcel2003);return userList;} catch (Exception e) {e.printStackTrace();}return null;}/*** 根据excel里面的内容读取客户信息** @param is          输入流* @param isExcel2003 excel是2003还是2007版本* @return* @throws IOException*/public static List<BGoodsInfo> createExcel(InputStream is, boolean isExcel2003) {try {Workbook wb = null;if (isExcel2003) {// 当excel是2003时,创建excel2003wb = new HSSFWorkbook(is);} else {// 当excel是2007时,创建excel2007wb = new XSSFWorkbook(is);}List<BGoodsInfo> userList = readExcelValue(wb);// 读取Excel里面客户的信息return userList;} catch (IOException | ParseException e) {e.printStackTrace();}return null;}/*** 读取Excel里面客户的信息** @param wb* @return*/private static List<BGoodsInfo> readExcelValue(Workbook wb) throws ParseException {//默认会跳过第一行标题// 得到第一个shellSheet sheet = wb.getSheetAt(0);// 得到Excel的行数totalRows = sheet.getPhysicalNumberOfRows();// 得到Excel的列数(前提是有行数)if (totalRows > 1 && sheet.getRow(0) != null) {totalCells = sheet.getRow(0).getPhysicalNumberOfCells();}List<BGoodsInfo> userList = new ArrayList<BGoodsInfo>();// 循环Excel行数for (int r = 1; r < totalRows; r++) {Row row = sheet.getRow(r);if (row == null) {continue;}BGoodsInfo user = new BGoodsInfo();// 循环Excel的列for (int c = 0; c < totalCells ; c++) {Cell cell = row.getCell(c);if (null != cell) {if (c == 0) {           //第一列//如果是纯数字,将单元格类型转为Stringif (cell.getCellTypeEnum() == CellType.NUMERIC) {cell.setCellType(CellType.STRING);}//商品编码user.setGCode(cell.getStringCellValue());//将单元格数据赋值给user} else if (c == 1) {if (cell.getCellTypeEnum() == CellType.NUMERIC) {cell.setCellType(CellType.STRING);}//商品名称user.setGName(cell.getStringCellValue());}else if (c == 2) {if (cell.getCellTypeEnum() == CellType.NUMERIC) {cell.setCellType(CellType.STRING);}//条形码user.setGBarCode(cell.getStringCellValue());} else if (c == 3) {if (cell.getCellTypeEnum() == CellType.NUMERIC) {cell.setCellType(CellType.STRING);}//区内企业代码user.setTradeCode(cell.getStringCellValue());} else if (c == 4) {if (cell.getCellTypeEnum() == CellType.NUMERIC) {cell.setCellType(CellType.STRING);}//区内企业名称user.setTradeName(cell.getStringCellValue());} else if (c == 5) {if (cell.getCellTypeEnum() == CellType.NUMERIC) {cell.setCellType(CellType.STRING);}//商品规格/型号user.setGModel(cell.getStringCellValue());} else if (c == 6) {if (cell.getCellTypeEnum() == CellType.NUMERIC) {cell.setCellType(CellType.STRING);}//商品料号user.setGItemNo(cell.getStringCellValue());} else if (c == 7) {if (cell.getCellTypeEnum() == CellType.NUMERIC) {cell.setCellType(CellType.STRING);}//申报计量单位user.setGoodsUnit(cell.getStringCellValue());} else if (c == 8) {if (cell.getCellTypeEnum() == CellType.NUMERIC) {cell.setCellType(CellType.STRING);}//识别商品码user.setGDiscernCode(cell.getStringCellValue());}else if (c == 9) {if (cell.getCellTypeEnum() == CellType.NUMERIC) {cell.setCellType(CellType.STRING);}//识别商品名称user.setGDiscernName(cell.getStringCellValue());}else if (c == 10) {if (cell.getCellTypeEnum() == CellType.NUMERIC) {cell.setCellType(CellType.STRING);}//申报人user.setDeclareUser(cell.getStringCellValue());}else if (c == 11) {if (cell.getCellTypeEnum() == CellType.NUMERIC) {cell.setCellType(CellType.STRING);}//申报时间String stringCellValue = cell.getStringCellValue();Date date = DateUtils.stringToDate(stringCellValue, "yyyy-MM-dd HH:mm:ss");user.setDeclareTime(date);}}}//将excel解析出来的数据赋值给对象添加到list中user.setCreateTime(new Date());// 添加到listuserList.add(user);}return userList;}/*** 验证EXCEL文件** @param filePath* @return*/public static boolean validateExcel(String filePath) {if (filePath == null || !(isExcel2003(filePath) || isExcel2007(filePath))) {errorMsg = "文件名不是excel格式";return false;}return true;}// @描述:是否是2003的excel,返回true是2003public static boolean isExcel2003(String filePath) {return filePath.matches("^.+\\.(?i)(xls)$");}//@描述:是否是2007的excel,返回true是2007public static boolean isExcel2007(String filePath) {return filePath.matches("^.+\\.(?i)(xlsx)$");}
}h

对于插入的数据进行验证

 public void importExcel(MultipartFile file) throws IOException {List<BGoodsInfo> excelInfo = ReadPatientExcelUtil.getExcelInfo(file);for (BGoodsInfo s : excelInfo) {QueryWrapper<BGoodsInfo> wrapper = new QueryWrapper<>();wrapper.lambda().eq(BGoodsInfo::getGCode, s.getGCode());BGoodsInfo list = getOne(wrapper);if (list == null) {log.info("该商品没有被备案过,开始备案开始{}", s);save(s);continue;} else {LambdaUpdateWrapper<BGoodsInfo> set = new LambdaUpdateWrapper<BGoodsInfo>().eq(BGoodsInfo::getId, list.getId());log.info("该商品已经备案过,修改该商品备案的数据开始{}", s);update(s, set);}}}

excel文件导入到mysql数据库中相关推荐

  1. 将Excel文件导入到MySQL数据库中并实现列转行操作

    在处理数据的时候,因为数据源在Excel文件中,本人Excel文件的处理方法不是太会,加上朋友说在Excel中处理这样的数据很麻烦,我就想着干脆导入到数据库中通过代码解决这个问题,感兴趣的可以找我拿数 ...

  2. php把excel导入mysql数据库中_PHP将Excel文件导入到MySQL数据库

    这篇文章主要介绍了PHP上传Excel文件导入数据到MySQL数据库示例,可以将Excel的数据写入到MySQL数据库中,感兴趣的同学可以了解一下. 最近在做Excel文件导入数据到数据库.网站如果想 ...

  3. 关于将EXCEL文件导入到MYSQL数据库的一些方法

    现在我来介绍一下如何利用phpMyAdmin批量导入Excel内容到MySQL.首先你要知道phpMyAdmin是什么(不知道的这篇文章可以跳过了),我今天用的版本是phpMyAdmin 3.2.4, ...

  4. excel xml mysql数据库,数据库文本文档excel表格-excel xml格式的文件 导入到 MYSQL 数据库的语句...

    教你怎样将Word表格导入到Excel中 方法如下: 1.首先,打开媒介工具"记事本",将word文件里需要导入的数据,复制粘贴到记事本当中,然后保存成为txt文件,本例中将txt ...

  5. 如何将数据从Excel文件导入SQL Server数据库

    There are many ways to import data from an Excel file to a SQL Server database using: 有多种方法可以使用以下方法将 ...

  6. java excel 导入 关闭,excel关联别的表格数据库-java实现excel表导入,有的字段数据库中没有,需要关......

    excel中我想用另一张表的内容我数据库,当我在一个... 用VLOOKUP函数,=VLOOKUP(lookup_value,table_array,col_index_num,range_looku ...

  7. php将excel导入mysql,PHP实现将EXCEL文件导入到MYSQL

    最近因项目需求,要实现将excel文件通过php页面导入mysql数据库中.在网上搜了很多这方面的资料,发现都是将excel文件另存为csv文件,然后从csv文件导入.这里介绍一个直接将excel文件 ...

  8. spring batch 读mysql_spring batch csv文件导入到mysql数据库

    继续学习spring batch , 定义个 spring batch job, 将数据读入到 mysql 数据库中. 用数据库记录job 任务.所用到的jar包与第一篇文章(http://www.y ...

  9. 将Excel中的数据导入到MySql数据库中

    如何导入到MySql中 将数据导入MySql库中,比较直接的方式就是将数据生成相应的SQL语句来执行.我们的思路是将Excel中的数据拼接成相应的SQL语句并保存在**.sql**文件中提供给MySq ...

最新文章

  1. 获取标签的src属性兼容性
  2. 百田公司:与神策数据携手,筑就爆款游戏背后的 4 个数据砝码
  3. 使用机器学习算法在 .NET Core 中运行的 100% C# 开源 AI 聊天机器人平台构建器...
  4. 第12章 正则表达式与文件格式化处理
  5. Maven安装与配置教程
  6. myeclipse下载_资源共享:常用的编程软件下载链接分享
  7. 定义与声明、头文件与extern总结
  8. 一步一步实现一个简单的OS(先小装一下)
  9. Flash应用之百宝箱
  10. zuiqingchun4
  11. Shader编程学习笔记(五)—— Fixed Function Shader 1
  12. 工业物联网在制造业中有哪些用途?以数网星工业物联网平台为例
  13. 雷军:向小米手机1首批用户每人赠送1999元红包
  14. kendoUI系列教程之DropDownList下拉菜单
  15. 看《赢在中国》的一点思绪
  16. 写给大家看的Web设计书:第3版(世界级设计大师指点迷津)(全彩印刷)
  17. STM32H750 更好用的CANFD 用例详解
  18. 面向智慧文博的知识图谱构建综述
  19. MIT6.S081操作系统实验——操作系统是如何在qemu虚拟机中启动的?
  20. SWF插入 PPT 2007

热门文章

  1. 【计算机网络】数据链路层习题
  2. 新基建数字化智能房产运用现状及发展趋势分析
  3. (转)Chomp游戏(必胜策略分析)
  4. excel函数技巧:各种排名方式汇总
  5. 通过Socket编程理解TCP三次握手
  6. FleaPHP 域名事件搞笑版 1
  7. 初学者使用BeanUtils.populate()易犯的错误
  8. 按规划安装配置DNS及NSX Advanced Load Balance(AVI)
  9. VTK 中MIP和MPR
  10. [Simulink] MBD开发嵌入式软件的C语言基础