下载并引用spreadJs

定义全局变量,初始化表格控件 var $this = this;this.spread_obj;

  1. $this.spread_obj = new GC.Spread.Sheets.Workbook(document.getElementById('xxx'));
  1. function fn_import() {
  2. var lay = layer.open({
  3. type: 5,
  4. title: '导入文件',
  5. closeBtn: true,
  6. area: ['350px', 'auto'],
  7. btn: ['保存', '取消'],
  8. btnAlign: 'c',
  9. scrollbar: false,
  10. moveType: 1,
  11. content: ' <input type="file" id="fileDemo" class="input"',
  12. success: function(e, index) {
  13.  
  14. },
  15. yes: function(index, layero) {
  16. var files = $('#fileDemo').val();
  17. var suffix = files.substring(files.lastIndexOf(".") + 1, files.length);
  18. if (suffix == "xls" || suffix == "xlsx") {
  19. var excelFile = document.getElementById('fileDemo').files[0];
  20. var tempSpread = $this.spread_obj;
  21. var excelIO = new GC.Spread.Excel.IO();
  22. excelIO.open(excelFile, function(json) {
  23. tempSpread.fromJSON(
  24. json, {
  25. ignoreFormula: false,
  26. ignoreStyle: false,
  27. frozenColumnsAsRowHeaders: false,
  28. frozenRowsAsColumnHeaders: false
  29. }
  30. );
  31. layer.close(lay);
  32. }, function(e) {
  33. // process error
  34. console.log(e);
  35. });
  36. } else {
  37. layer.msg("请选择excel文件!");
  38. }
  39. }
  40. });
  41.  
  42. }
  1. function fn_save_add(callback) {
  2. var template_property = escape(
  3. JSON.stringify(
  4. $this.spread_obj.toJSON({
  5. //includeBindingSource: true,
  6. ignoreStyle: false,
  7. ignoreFormula: false,
  8. rowHeadersAsFrozenColumns: false,
  9. columnHeadersAsFrozenRows: false
  10. })
  11. )
  12. );
  13. $.ajax({
  14. type: "POST",
  15. url: panchina.spreadjs.common.url() + "/system/api/template/v1/addTemplate",
  16. contentType: "application/json;charset=UTF-8",
  17. data: JSON.stringify(template_property),
  18. xhrFields: {
  19. withCredentials: true
  20. },
  21. success: function(result) {
  22. layer.close(index);
  23. if (result.code == 200) {
  24. layer.msg("保存成功", {
  25. time: 2000,
  26. icon: 1
  27. });
  28. } else {
  29. console.log(result);
  30. if (result.message) {
  31. layer.msg("保存失败:" + result.message, {
  32. time: 4000,
  33. icon: 2
  34. });
  35. } else {
  36. layer.msg("保存失败:" + result.msg, {
  37. time: 4000,
  38. icon: 2
  39. });
  40. }
  41. }
  42. },
  43. error: function(xhr, msg, ex) {}
  44. });
  45. }
  1. //controller文件
  2.  
  3. //保存新增调查表模板数据
  4. @PostMapping("/v1/addTemplate")
  5. @ApiOperation(value = "保存新增调查表模板数据")
  6. public ApiResult addTemplate(@RequestBody QuestionaryTemplateVO query) {
  7. return templateService.addTemplate(query);
  8. }
  9. //service文件
  10.  
  11. @Override
  12. @Transactional(rollbackFor = Exception.class)
  13. public ApiResult addTemplate(QuestionaryTemplateVO query) {
  14. //模板编号不能重复
  15. Long existId = questionaryTemplateMapperExt.getTemplateByTemplateCode(query.getTemplate().getCode());
  16. if (existId != null) {
  17. return ApiResult.error("模板编码已存在");
  18. }
  19. Map map = new HashMap();
  20. try {
  21. query.getData().setId(PrimaryKeyUtil.getPrimaryKeyId());
  22. query.getData().setTemplateId(query.getTemplate().getId());
  23. //模板数据解码
  24. query.getData().setTemplateData(ConvertFormUtil.unescape(query.getData().getTemplateData()));
  25. questionaryTemplateDataMapper.insert(query.getData());
  26. map.put("templateId", query.getTemplate().getId());
  27.  
  28. } catch (InvalidSystemClockException e) {
  29. throw new CustomException(400, "主键生成异常");
  30. }
  31. return ApiResult.ok(map);
  32. }
  33.  
  34. //util文件
  35. public class ConvertFormUtil {
  36.  
  37. //存在中文乱码问题
  38. public static String ConvertForm(String convertStr) {
  39. String str = convertStr.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
  40. return URLDecoder.decode(str);
  41. }
  42.  
  43. public static String unescape(String src) {
  44. StringBuffer tmp = new StringBuffer();
  45. tmp.ensureCapacity(src.length());
  46. int lastPos = 0, pos = 0;
  47. char ch;
  48. while (lastPos < src.length()) {
  49. pos = src.indexOf("%", lastPos);
  50. if (pos == lastPos) {
  51. if (src.charAt(pos + 1) == 'u') {
  52. ch = (char) Integer.parseInt(src
  53. .substring(pos + 2, pos + 6), 16);
  54. tmp.append(ch);
  55. lastPos = pos + 6;
  56. } else {
  57. ch = (char) Integer.parseInt(src
  58. .substring(pos + 1, pos + 3), 16);
  59. tmp.append(ch);
  60. lastPos = pos + 3;
  61. }
  62. } else {
  63. if (pos == -1) {
  64. tmp.append(src.substring(lastPos));
  65. lastPos = src.length();
  66. } else {
  67. tmp.append(src.substring(lastPos, pos));
  68. lastPos = pos;
  69. }
  70. }
  71. }
  72. return tmp.toString();
  73. }
  74. }

注:MySQL根据配置文件会限制Server接受的数据包大小。有时候插入、更新或查询时数据包的大小,会受 max_allowed_packet 参数限制,导致操作失败。

show VARIABLES like '%max_allowed_packet%';查看

set global max_allowed_packet = 20*1024*1024*10 ;修改

spreadJs导入、Java保存到数据库的更多相关文章

  1. 解决Java保存到数据库中文乱码问题,加useUnicode=true&characterEncoding=UTF-8

    Java保存到数据库中文乱码, 解决方法如下: 我们在连接MySQL数据库的时候一般都会在url后面添加useUnicode=true&characterEncoding=UTF-8,但是问什 ...

  2. Java导入excel并保存到数据库

    首先建立好excel表格,并对应excel表格创建数据库表. 前台jsp页面:其中包含js <%@ page language="java" import="jav ...

  3. POI读取Excel数据保存到数据库,并反馈给用户处理信息(导入带模板的数据)

    今天遇到这么一个需求,将课程信息以Excel的形式导入数据库,并且课程编号再数据库中不能重复,也就是我们需要先读取Excel提取信息之后保存到数据库,并将处理的信息反馈给用户.于是想到了POI读取文件 ...

  4. JAVA从文本文件(txt)读取一百万条数据保存到数据库

    Java读取大文本文件保存到数据库 1.追求效率 将文件读取到内存,效率比较高,经过测试读取1G左右的文本文件,机器内存消耗达到接近3个G,对内存消耗太大,不建议使用 2.通过调用第三方类库实现 通过 ...

  5. Java 用jxl读取excel并保存到数据库(此方法存在局限,仅限本地电脑操作,放在服务器上的项目,需要把文件上传到服务器,详细信息,见我的别的博客)

    项目中涉及到读取excel中的数据,保存到数据库中,用jxl做起来比较简单. 基本的思路: 把excel放到固定盘里,然后前段页面选择文件,把文件的名字传到后台,再利用jxl进行数据读取,把读取到的数 ...

  6. Java实现MySQL数据库导入

    距离上班还有一段时间.现在总结一下如何使用Java语言实现MySQL数据库导入: 首先新建名为test的数据库: 其次执行下面Java代码: import java.io.File; import j ...

  7. 利用Java进行MySql数据库的导入和导出

    利用Java来进行Mysql数据库的导入和导出的总体思想是通过Java来调用命令窗口执行相应的命令. MySql导出数据库的命令如下: mysqldump -uusername -ppassword  ...

  8. Java Hour 47 WeatherInfo 保存到数据库

    经历了上周简单的休整以后,我们继续Hibernate 之旅. 保存到数据库 private void saveWeatherInfo(Weatherinfo weatherInfo) { // Sav ...

  9. Java读取oracle数据库中blob字段数据文件保存到本地文件(转载)

    转自:https://www.cnblogs.com/forever2698/p/4747349.html package com.bo.test; import java.io.FileOutput ...

  10. Java中将图片保存到数据库中

    在实际的开发中,我们可能需要将图片.影音等文件直接保存到数据库中,然后通过编程方式将数据读出进行使用.例如将读出的图片数据显示出来,将读出的电影文件播放出来. 二进制数据直接保存到文件和从文件中读出非 ...

随机推荐

  1. 微服务笔记之Euraka(2)

    Eureka Server启动过程 入口:SpringCloud充分利用了SpringBoot的自动装配的特点 Eureka-server的jar包,发现在MERA-INF下面有配置文件spring. ...

  2. 宿主机通过vmware创建的kali虚拟机连接redis,sftp等功能

    介绍 黑客专用的linux kali, 下载后即包含很多黑客工具,对于我这样的菜鸡,很感动的就是里面包含了最新版的redis,java,mysql等工具.自带不错的界面省事 kali官网: https ...

  3. idea启动项目,报java.lang.OutOfMemoryError: PermGen space 和启动项目很慢的问题解决

    启动一个老的项目,报错,查是内存溢出 进入 VM options 加上   -Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m   在 ...

  4. Account Manager privacy agreement

    Account Manager privacy agreement [Account Manager] (hereinafter referred to as "we") )We ...

  5. 在百度云服务器上部署Django网站的经历

    前言: 前段时间,利用Django为单位制作了一个小型的内部考勤系统,本想放到单位内部的服务器上,考虑到运行的稳定.安全防护等问题,最终决定把网站部署到百度云服务器上,事先也在网上查找了一些资料,但过 ...

  6. vue自定义组件的总结(一)

    1.定义组件时 <template>   <input     class="input"     :type="type"     :pla ...

  7. SQL语句大全,你不会写的SQL可能都在这里

    1.创建数据库 CREATE DATABASE database-name 2.删除数据库 drop database dbname3.说明:备份sql server 创建 备份数据的 device ...

  8. 查看oracle死锁

    select A.sid, b.serial#, decode(A.type, 'MR', 'Media Recovery', 'RT','Redo Thread', 'UN','User Name' ...

  9. 福昕PDF如何以多个窗口打开文件

    福昕PDF默认设置下双击打开多个文件,所有文件只会在同一个程序内显示,怎样让每个文件都使用单独一个程序,以多个窗口的形式打开呢? 福昕软件,文件 > 偏好设置 > 文档 > 勾选&q ...

  10. Django的urls的配置

    在一个请求到达的时候,最先达到的就是视图层,然后根据url映射到视图函数.这一部分我们来说明url的配置. 概述 为了给一个应用设计URL,你需要创建一个Python 模块,通常称为URLconf(U ...