制定标准

导入总是与导出相辅相成的,无规矩不成方圆。所谓的标准都是大家一同来维护和遵守的,那么首先就是制定一个模板。

这样可以减少验证的工作量。

例如时间的规范【yyyy-MM-dd】,获取单元格的时间值用下面的方法

java.util.Date date= cell.getDateCellValue();

但是如果用户不合法输入,那么将会报IllegalStateException异常,此时我们可以进行错误的捕获和处理

导入的前提的数据是合法的,因此验证数据是非常必要的,数据的格式就要大家要遵守了。但是严谨而已,还是必须考虑用户的非法操作。

模板的标识

每个模板都有对应的标识,不可能随便什么数据都可以往数据库表对象中塞的,因此要设计一个标识符用于区分模板。

标识符必须是唯一的,可以识别的。通常都是指定导入对象的主键为标识符。

模板校验

如果模板限定了可以编辑区域,那么只是需要验证标识符即可。但是往往我们需要复制大量的数据,因此不可能设置保护模式,这个时候需要对模板进行格式校验。

校验包括模版格式校验、数据合法性校验,数据范围校验等等。

如果各种校验都用java程序来判断,那么数据量很大的时候,处理和执行速度会非常的慢。经过几天研究,发现善于利用oracle的语句可以使效率提高几十倍,前提

是数据都放在数据库中。

因此,除了简单的检验之后,我们可以将excel的数据放入到数据库创建的临时表或者日志表中,进行数据的校验。

创建的数据临时表必须满足两个条件,第一是含有模板标识符,第二是有一列指标用于存与excel对应的行数。

这样方便返回错误详细信息,告诉用户哪行哪列数据出现问题。

下面是几种简单的校验,非常实用:

@ 检验excel的数据是否重复(数据重复的标准是某几列的值是否相等,即数据唯一标识)

我们不需要循环excel一一对比,我们完全可以使用oracle函数实现数据重复检查

select distinct substr(数据唯一标识列数据) as rn from 数据临时表 a

where rowid !=(select max(rowid) from 数据临时表 b where 数据唯一标识列数据相等

得到的数据是去除重复的数据,只要小于总条数(excel的行数lastRow),那么就可以知道重复的数据。

@ 检验导入的数据是否已经存在

select columns from 数据正式表 INTERSECT (select columns from 数据临时表 where ..);

只要rs.next(),那么证明存在数据,并且可以获取到重复的数据。

java excel 导入 加校验_POI实现excel各种验证和导入的思路总结相关推荐

  1. excel导入数据校验_使用Excel数据验证限制日期范围

    excel导入数据校验 Yesterday, one of my clients emailed to let me know that she was having trouble entering ...

  2. excel导入数据校验_从Excel数据验证列表中选择多个项目

    excel导入数据校验 You've probably used an Excel data validation drop down list, where you can click the ar ...

  3. java excel 导入 加校验_【JavaWeb】导入Excel并进行校验

    一.需要实现的目标 1.界面编写 2.导入表读取表名,进行校验,后台匹配(判断此表的名称是否能够模糊匹配上) 3.确定表存在,读取其中的数据,暂存 4.正则表达式数据校验(判断是否已存在,数据是否符合 ...

  4. java excel 导入 加校验_Java 利用POI进行excel文件导入时校验数据,并且追加错误批注...

    首先拿到前端file控件上传的excel文件,到后台接收!拿到excel这就不多说了网上很多demo的,下面直接说校验单元格追加批注信息的 private void setpz(Workbook wo ...

  5. java poi 加粗_poi生成excel整理(设置边框/字体/颜色/加粗/居中/)

    HSSFWorkbook wb = new HSSFWorkbook();html HSSFSheet sheet = wb.createSheet();字体 HSSFCellStyle setBor ...

  6. java excel单元格背景色_POI 设置Excel单元格背景色(setFillForegroundColor)

    背景介绍: 使用Java开发信息系统项目,项目中往往会涉及到报表管理部分,而Excel表格首当其冲称为最合适的选择,但是对单元格操作时对于设置单元格的背景颜色却很少提及,本文旨在方便单元格背景颜色设计 ...

  7. java poi 填充单元格_POI操作excel表格(建立工作薄、创建工作表、将数据填充到单元格中)...

    [java]代码库/* * To change this template, choose Tools | Templates * and open the template in the edito ...

  8. java 单元格字体颜色_poi设置excel字体颜色

    第二步:编写导出代码. 1.在项目中引入poi的依赖包poi-3.17.jar. 2.编写导出的代码 public static void main(String[] args) throws Exc ...

  9. java导出excel居中不生效_POI 导出Excel 设置内容居中 换行

    表头设置: HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("导出数据& ...

最新文章

  1. 我自学python的路-Python的学习路经
  2. (chap6 Http首部) 响应首部字段 AllowCt-EncodingCt-LanguageCt-LengthCt-Location
  3. 如何打开设计思路,避免不断改稿?只需提前做好这一步
  4. linux rm 不释放_linux删除文件空间不释放问题解决
  5. 代码编辑器Sublime Text 3 免费使用方法与简体中文汉化包下载
  6. 基于DirectShow的局域网内音视频流的多机共享
  7. python-copy模块-待优化的功能
  8. python运算符and_Python AND运算子
  9. 基于python/opencv/tesseract使用传统方法的,表格图片版面分析以及印刷体汉字识别(持续更新,学习备份用)
  10. react中一个音频或视频播放的时候其他音视频暂停播放
  11. freeCAD transform stepamp;amp; stp to stl logging py2exe 打包
  12. 怎样把HTC G7的内存扩展到2GB
  13. learning python in the hard way习题6~10的附加题练习
  14. Vault: 基础教程之密码引擎及动态密码生成
  15. 区块链如何改变出版商在学术传播中的角色
  16. 牛津英语字典pdf下载_除了long time no see,你知道还有这些中式英语也进入了牛津字典吗...
  17. 论文阅读笔记:Multi-Turn Response Selection for Chatbots with Deep Attention Matching Network
  18. python数据分析就业班_云开见明 2020Python数据分析师特训营全套课程84节
  19. Python脚本--别踩小bai块
  20. 阿里云操作云服务器ECS,linux系统远程连接

热门文章

  1. 持久代是方法区还是堆中的?
  2. python中other_Python other
  3. TensorFlow 基本操作
  4. python之虚拟环境
  5. 【MySQL】Linux端-实现Mysql数据定时自动备份
  6. 【python】逻辑运算符总结
  7. C++中operator的主要用法
  8. VS2010断点设置技巧
  9. cm0中断优先级_转:第13章 FreeRTOS任务优先级修改及其分配方案
  10. 在python中模块可以封装_python 制作python包,封装成可用模块教程