spreadJs导入、Java保存到数据库
下载并引用spreadJs
定义全局变量,初始化表格控件 var $this = this;this.spread_obj;
$this.spread_obj = new GC.Spread.Sheets.Workbook(document.getElementById('xxx'));
function fn_import() {
        var lay = layer.open({
            type: 5,
            title: '导入文件',
            closeBtn: true,
            area: ['350px', 'auto'],
            btn: ['保存', '取消'],
            btnAlign: 'c',
            scrollbar: false,
            moveType: 1,
            content: ' <input type="file" id="fileDemo" class="input"',
            success: function(e, index) {
            },
            yes: function(index, layero) {
                var files = $('#fileDemo').val();
                var suffix = files.substring(files.lastIndexOf(".") + 1, files.length);
                if (suffix == "xls" || suffix == "xlsx") {
                    var excelFile = document.getElementById('fileDemo').files[0];
                    var tempSpread = $this.spread_obj;
                    var excelIO = new GC.Spread.Excel.IO();
                    excelIO.open(excelFile, function(json) {
                        tempSpread.fromJSON(
                            json, {
                                ignoreFormula: false,
                                ignoreStyle: false,
                                frozenColumnsAsRowHeaders: false,
                                frozenRowsAsColumnHeaders: false
                            }
                        );
                        layer.close(lay);
                    }, function(e) {
                        // process error
                        console.log(e);
                    });
                } else {
                    layer.msg("请选择excel文件!");
                }
            }
        });
    }
function fn_save_add(callback) {
var template_property = escape(
            JSON.stringify(
                $this.spread_obj.toJSON({
                    //includeBindingSource: true,
                    ignoreStyle: false,
                    ignoreFormula: false,
                    rowHeadersAsFrozenColumns: false,
                    columnHeadersAsFrozenRows: false
                })
            )
        );
$.ajax({
            type: "POST",
            url: panchina.spreadjs.common.url() + "/system/api/template/v1/addTemplate",
            contentType: "application/json;charset=UTF-8",
            data: JSON.stringify(template_property),
            xhrFields: {
                withCredentials: true
            },
            success: function(result) {
                layer.close(index);
                if (result.code == 200) {
                    layer.msg("保存成功", {
                        time: 2000,
                        icon: 1
                    });
                } else {
                    console.log(result);
                    if (result.message) {
                        layer.msg("保存失败:" + result.message, {
                            time: 4000,
                            icon: 2
                        });
                    } else {
                        layer.msg("保存失败:" + result.msg, {
                            time: 4000,
                            icon: 2
                        });
                    }
                }
            },
            error: function(xhr, msg, ex) {}
        });
}
//controller文件 //保存新增调查表模板数据
@PostMapping("/v1/addTemplate")
@ApiOperation(value = "保存新增调查表模板数据")
public ApiResult addTemplate(@RequestBody QuestionaryTemplateVO query) {
return templateService.addTemplate(query);
}
//service文件 @Override
@Transactional(rollbackFor = Exception.class)
public ApiResult addTemplate(QuestionaryTemplateVO query) {
//模板编号不能重复
Long existId = questionaryTemplateMapperExt.getTemplateByTemplateCode(query.getTemplate().getCode());
if (existId != null) {
return ApiResult.error("模板编码已存在");
}
Map map = new HashMap();
try {
query.getData().setId(PrimaryKeyUtil.getPrimaryKeyId());
query.getData().setTemplateId(query.getTemplate().getId());
//模板数据解码
query.getData().setTemplateData(ConvertFormUtil.unescape(query.getData().getTemplateData()));
questionaryTemplateDataMapper.insert(query.getData());
map.put("templateId", query.getTemplate().getId()); } catch (InvalidSystemClockException e) {
throw new CustomException(400, "主键生成异常");
}
return ApiResult.ok(map);
} //util文件
public class ConvertFormUtil { //存在中文乱码问题
public static String ConvertForm(String convertStr) {
String str = convertStr.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
return URLDecoder.decode(str);
} public static String unescape(String src) {
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length());
int lastPos = 0, pos = 0;
char ch;
while (lastPos < src.length()) {
pos = src.indexOf("%", lastPos);
if (pos == lastPos) {
if (src.charAt(pos + 1) == 'u') {
ch = (char) Integer.parseInt(src
.substring(pos + 2, pos + 6), 16);
tmp.append(ch);
lastPos = pos + 6;
} else {
ch = (char) Integer.parseInt(src
.substring(pos + 1, pos + 3), 16);
tmp.append(ch);
lastPos = pos + 3;
}
} else {
if (pos == -1) {
tmp.append(src.substring(lastPos));
lastPos = src.length();
} else {
tmp.append(src.substring(lastPos, pos));
lastPos = pos;
}
}
}
return tmp.toString();
}
}
注:MySQL根据配置文件会限制Server接受的数据包大小。有时候插入、更新或查询时数据包的大小,会受 max_allowed_packet 参数限制,导致操作失败。
show VARIABLES like '%max_allowed_packet%';查看
set global max_allowed_packet = 20*1024*1024*10 ;修改
spreadJs导入、Java保存到数据库的更多相关文章
- 解决Java保存到数据库中文乱码问题,加useUnicode=true&characterEncoding=UTF-8
		
Java保存到数据库中文乱码, 解决方法如下: 我们在连接MySQL数据库的时候一般都会在url后面添加useUnicode=true&characterEncoding=UTF-8,但是问什 ...
 - Java导入excel并保存到数据库
		
首先建立好excel表格,并对应excel表格创建数据库表. 前台jsp页面:其中包含js <%@ page language="java" import="jav ...
 - POI读取Excel数据保存到数据库,并反馈给用户处理信息(导入带模板的数据)
		
今天遇到这么一个需求,将课程信息以Excel的形式导入数据库,并且课程编号再数据库中不能重复,也就是我们需要先读取Excel提取信息之后保存到数据库,并将处理的信息反馈给用户.于是想到了POI读取文件 ...
 - JAVA从文本文件(txt)读取一百万条数据保存到数据库
		
Java读取大文本文件保存到数据库 1.追求效率 将文件读取到内存,效率比较高,经过测试读取1G左右的文本文件,机器内存消耗达到接近3个G,对内存消耗太大,不建议使用 2.通过调用第三方类库实现 通过 ...
 - Java 用jxl读取excel并保存到数据库(此方法存在局限,仅限本地电脑操作,放在服务器上的项目,需要把文件上传到服务器,详细信息,见我的别的博客)
		
项目中涉及到读取excel中的数据,保存到数据库中,用jxl做起来比较简单. 基本的思路: 把excel放到固定盘里,然后前段页面选择文件,把文件的名字传到后台,再利用jxl进行数据读取,把读取到的数 ...
 - Java实现MySQL数据库导入
		
距离上班还有一段时间.现在总结一下如何使用Java语言实现MySQL数据库导入: 首先新建名为test的数据库: 其次执行下面Java代码: import java.io.File; import j ...
 - 利用Java进行MySql数据库的导入和导出
		
利用Java来进行Mysql数据库的导入和导出的总体思想是通过Java来调用命令窗口执行相应的命令. MySql导出数据库的命令如下: mysqldump -uusername -ppassword ...
 - Java Hour 47 WeatherInfo 保存到数据库
		
经历了上周简单的休整以后,我们继续Hibernate 之旅. 保存到数据库 private void saveWeatherInfo(Weatherinfo weatherInfo) { // Sav ...
 - Java读取oracle数据库中blob字段数据文件保存到本地文件(转载)
		
转自:https://www.cnblogs.com/forever2698/p/4747349.html package com.bo.test; import java.io.FileOutput ...
 - Java中将图片保存到数据库中
		
在实际的开发中,我们可能需要将图片.影音等文件直接保存到数据库中,然后通过编程方式将数据读出进行使用.例如将读出的图片数据显示出来,将读出的电影文件播放出来. 二进制数据直接保存到文件和从文件中读出非 ...
 
随机推荐
- jenkins-构建触发器之定时构建和轮询 SCM
			
前言 最近搭建自动化框架,跑自动化用例每次都得用手工点击构建任务,我们希望能每天固定时间跑,这样就不用管了,坐等收测试报告结果就行 定时构建语法 五颗星,中间用空格隔开 * * * * * 第一颗*表 ...
 - antd 动态添加表格列 表格不更新
			
原因:react 对比columns 数组为原数组,内存地址没变: 解决办法:用es6的扩展,生成新数组,添加操作列operateCol setTableColumns([...tableColums ...
 - nnlog 日志模块
			
python自带的logging模块理解起来比较费劲,直接pip install nnlog即可 1 import nnlog 2 log = nnlog.Logger(file_name='my.l ...
 - 流程图draw.io自选中文字体
			
draw.io免费好用,完全可以取代Visio. 唯独缺省选择都是英文字体.但要选择中文字体也可以自行添加,步骤: 确保系统里已经安装了相应中文字体.ubuntu下Google思源字体在/usr/sh ...
 - 解决 VSCode git commit 时 No such file or directory 报错问题
			
在git 进行 commit 时出现了 Git: .git/hooks/pre-commit: line 2: ./node_modules/pre-commit/hook: No such file ...
 - andriod升级保错问题归类
			
https://developer.aliyun.com/article/1116339 https://www.jianshu.com/p/5d9c790ab958 https://blog.51c ...
 - Linux命令-df
			
场景: df -h查看磁盘信息 /dev/mapper/rl-root 96% du -h --max-depth=1 命令代表寻找当前目录,哪个文件夹占用空间最大,进入根目录: [root@loca ...
 - Java基础——IO基础知识
			
字节流可以处理任何类型的数据(图片.MP3.视频等文件),字符流只能处理字符类型(文本文件)的数据.
 - Delphi 从字符串中提取数字
			
function GetNumberFromStr(strIn: string; sFlag: string): string; var i: Integer; tempStr: string; be ...
 - win10 安装mariadb
			
在MariaDB10.2.17 以前.解压后在目录下看到my-huge.ini.my-innodb-heavy-4G.ini.my-large.ini.my-medium.ini.my-small.i ...