做完了一个报表导入数据库 功能 遇到几个问题:一 、Poi解析excel 的两种格式 xls xlsx. 二、form表单上传使用ajax

三、excel 单元格中有公式存在普通的读取方式读到的是公式不是数据

1.[代码]先从上传文件开始,最开始是套用项目中一直在用的validform

$(function() {

//ajax初始化 Validform 表单按钮

$("#formobj").Validform({

tiptype : 4,

btnSubmit : "#btn_sub",

btnReset : "#btn_reset",

ajaxPost : false,//ajaxpost 是true的时候死活不能提交到后台去

//为了实现功能只能,只能将就一下 但是问题也很严重,这里返回的值是

// 当前form的对象,所以不管我后台是什么情况前台都会提示 上传成功

callback: function (data){

var win = frameElement.api.opener;

if (data) {

win.tip("上传成功!");

frameElement.api.hide();

//win.reloadTable(data);

}

win.parentLoad();

}

});

});

具体的validform可以百度下看看它的说明文档

2.[代码]ajax上传

//上面说到 validform ajaxPost为false时form表单才能提交相对的 返回的数据是form的对象,实际上不能满足我//的要求。所以功能实现之后 改!

//想到 html5 是有 FormData 的 于是

文件名称:

选择文件:

function ajsave(){

var formData = new FormData($( "#ajform" )[0]);

$.ajax({

url: path+"reportForUrlController/saveOrUpdata" ,

type: 'POST',

data:formData,

async: false,

cache: false,

contentType: false,

processData: false,

success: function (data) {

var win = frameElement.api.opener;

if(data.success==true){

win.tip(data.msg);

frameElement.api.close();

win.parentLoad();

}else{

$.messager.alert('提示',data.msg);

}

}

});

}

//到了这里想着后台处理基本什么情况前台都能告诉用户上传的状态并且能正常上传了。

//实际上确实能满足业务需求了

//测试发现问题了!IE10以下还是不能提交表单 FormData 不支持IE10以下的版本!

3.[代码]ajaxFileUpload

//这很烦啊,本人一般都用火狐 谷歌之类的很少用到ie但是用户不一定就不用ie啊

//于是 继续改!

//引入 js

function ajsave(){

$("#ajform").ajaxSubmit({

dataType: 'json',

contentType: "application/json; charset=utf-8",

success : function (data, status){

var win = frameElement.api.opener;

if(data.success){

win.tip(data.msg);

frameElement.api.close();

win.parentLoad();

}else{

$.messager.alert('提示',data.msg);

}

}

});

}

//测试之后发现都可以了

//于是皆大欢喜 前台搞定之后 该搞后台了

//这种形式传输的file 是 multipart/form-data 记得在 form 中添加属性

4.[代码]poi解析(包括解析单元格公式)

//在代码之前我一直在考虑怎么得到路径然后 通过路径去解析(本人对与上传功能并不熟悉)

//后来才发现我传到后台的file 它本身就是一个流... 于是皆大欢喜......

@RequestMapping(value = "/addorupdate" ,method = RequestMethod.POST)

@ResponseBody

public AjaxJson addorupdate(HttpServletRequest req,

@RequestParam(value = "file", required = false) MultipartFile file,

@RequestParam(value = "fileName", required = true) String FileName )

throws Exception {

AjaxJson j = new AjaxJson();

InputStream is = file.getInputStream();

String isName = file.getOriginalFilename();

//直接将excel 按后缀不同转成workbook格式的数据

String type = isName.substring(isName.lastIndexOf(".")+1);

Workbook book =null;

if(type.equals("xls")){

book = new HSSFWorkbook(is);

}else if(type.equals("xlsx")){

book = new XSSFWorkbook(is);

}

Sheet sheet = book.getSheetAt(0);

Row row = null;

for (int i = 1; sheet.getRow(i)!=null; i++) {

row = sheet.getRow(i);

for (int j = 0;row.getCell(j)!=null; j++) {

........

}

}

}

//之后的解析就不详细介绍了

//最后在excel的单元格是公式的情况下 使用 //String.valueOf(row.getCell(j).getNumericCellValue());

//就能获取到值了,

以上 form提交excel poi解析并存库完成

ssh excel 导入 mysql_ssh poi解析excel并将数据存入数据库相关推荐

  1. java解析excel报错,poi解析excel文件报错

    getFileMagic() only operates on streams which support mark(int) 使用 bis 解决 BufferedInputStream bis = ...

  2. 根据excel列动态创建mysql表_根据数据库字段动态生成excel模版下载,上传模版获取数据存入数据库(poi 反射)...

    环境:mysql5.7.28 java8 Spring boot 2.2.4 mybatis-plus3.10 动态:根据需求,用户可以选择对应的字段生成excle模版 下载 poi 反射:poi是e ...

  3. poi导入excel日期处理_poi解析excel读取日期为数字的问题

    Apache poi 版本:3.12 今天在用poi解析excel文件时,碰到一个蛋疼的问题. 在我的excel文件中有一列是日期类型,例如有以下这么一行数据(日期中月份前面的0会自动去掉): 在读取 ...

  4. POI解析Excel表格

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 这里实现poi解析Excel表格的例子,导入Exc ...

  5. 【poi-3.8】poi解析excel插入数据库详解

    文章目录 poi解析excel&插入数据库详解 说明 一.目的 二.准备工作 三.思路分析 四.流程图分析 五.核心代码 1:上传文件 2:获取输入流 3:初始化excel表 4:遍历行和列 ...

  6. poi解析excel读取日期为数字的问题

    Apache poi 版本:3.12 今天在用poi解析excel文件时,碰到一个蛋疼的问题. 在我的excel文件中有一列是日期类型,例如有以下这么一行数据(日期中月份前面的0会自动去掉): 在读取 ...

  7. Java面试poi中excel版本大小_java 中 poi解析Excel文件版本问题解决办法

    java 中 poi解析Excel文件版本问题解决办法 发布时间:2020-10-02 03:46:15 来源:脚本之家 阅读:91 作者:程诺 poi解析Excel文件版本问题解决办法 poi解析E ...

  8. 为什么poi解析Excel慢?

    我们项目用xlsx配置业务数据,每个项目中会有500~600张表,解析耗时1分多钟. 尝试改成csv后,解析耗时5~6秒. 这不禁让我陷入思考,都是文本数据,为什么poi解析Excel会这么慢? 带着 ...

  9. 使用Apache POI解析excel

    1.使用Apache POI解析excel,包括.xls和.xlsx Apache POI 针对Workbook有两种不同实现方式,分别是HSSFWorkbook(解析.xls文件)和XSSFWork ...

最新文章

  1. 新手入门必看:使用Selenium进行自动化测试
  2. python安装没有pip选项_python-3.x – 在ubuntu上没有pip的python安装
  3. python27安装-linux下安装python27 nginx 和uwsgi
  4. 搭建一个基于http的yum服务器
  5. Java == 与 equals 的不同
  6. 【转载】dotnet 线程同步
  7. 计算机技能鉴定操作试题,计算机操作员中级操作技能考核试卷职业技能鉴定国家题库...
  8. 15_python基础—文件操作
  9. java项目打成war包,使用ide打包部署在tomcat中
  10. 苹果付费app共享公众号_8.10号,IOS苹果App Store 5款付费App限时免费,支持iPhone/iPad...
  11. 基于android的影音设计,基于Android系统的影音播放器设 - 音响技术 - 电子发烧友网...
  12. windows 系统arp命令
  13. Java Swing教程
  14. switch组件使用 v-slot 使用,作用域插槽
  15. Zlib的安装与测试
  16. 游戏(2017-12)
  17. xquery_使用XQuery查询DB2 XML数据
  18. Scala初级实践——统计手机耗费流量(1)
  19. Java中使用redis的完整实例及常用命令
  20. html浏览器兼容性问题总结,常见的浏览器兼容性问题(小结)

热门文章

  1. 实现对象的复用——享元模式
  2. 大型电商网站的页面静态化方案是如何支撑亿级流量的?
  3. leetcode 62, 63, 980. Unique Paths I, II, III | 62, 63, 980. 不同路径 I, II, III(暴力递归->傻缓存->动态规划)
  4. leetcode 215. Kth Largest Element in an Array | 215. 数组中的第K个最大元素(Java)
  5. Python基础之:数字字符串和列表
  6. 分布式系统Lease机制
  7. Java中System.setProperty()用法
  8. 走进Java中的持有对象(容器类)之一 容器分类
  9. kotlin学习之类的扩展(四)
  10. iphone模拟器快捷键使用