Clark.Pan 发表于 2017-5-18 15:06:15

JAVA应用SpreadJS实现服务器端导入导出

本帖最后由 Clark.Pan 于 2024-11-21 10:00 编辑

本demo通过SpreadJS的前端导出导出与JAVA后端结合,实现分从服务器端导入Excel与导出Excel保存至服务器端这两个功能:

从服务器端导入Excel:
这部分使用纯前端实现。然后下载到前端直接打开,核心代码如下:var excelIo = new GC.Spread.Excel.IO();
    var excelFilePath = 'resources/Excel/importExcel.xlsx';
    var xhr = new XMLHttpRequest();
    xhr.open('GET', excelFilePath, true);
    xhr.responseType = 'blob';   
    xhr.onload = function(e) {
      if (this.status == 200) {
      // get binary data as a response
      var blob = this.response;
      // convert Excel to JSON
      excelIo.open(blob, function (json) {
            var workbookObj = json;
            spread.fromJSON(workbookObj);
      }, function (e) {
            // process error
            alert(e.errorMessage);
      }, {});
      }
    };
   
    xhr.send();
导出Excel保存至服务器端:
这部分使用前端导出功能与后端java结合的方式来实现,首先通过前端Excel导出,生成导出文件,然后通过formdata来承载导出文件,之后通过ajax将formdata传至后端java。后端java使用文件操作将文件保存至服务器端。
这里有以下需要注意的地方:
formdata没有办法改变enctype,而我们需要的用entype为multipart/form-data类型的form来承载导出文件。这里需要在jsp页面上创建一个空的form,并将其entype设置为multipart/form-data:
<form name="myform" id="myform" enctype="multipart/form-data" method="post"></form>之后js中只需要初始化一个该form的formdata实例即可:
var fd = new FormData(document.forms.namedItem("myform"));全部代码已经上传附件,可以下载进行参考。

o0chen 发表于 2017-6-16 16:30:09

代码不全??

Clark.Pan 发表于 2017-6-16 16:49:34

本帖最后由 ClarkPan 于 2017-6-16 16:51 编辑

o0chen 发表于 2017-6-16 16:30
代码不全??
附件是一个maven工程。需要您使用IDE进行导入,另外不明白您说得代码不全的意思, 您那边断定代码不全的原因是什么?

o0chen 发表于 2017-6-16 17:24:57

我以为用的是java代码后端实现的。。。。这个excelIO.js需要另外购买吗?

Clark.Pan 发表于 2017-6-16 17:42:17

o0chen 发表于 2017-6-16 17:24
我以为用的是java代码后端实现的。。。。这个excelIO.js需要另外购买吗?

这个是spreadjs产品包中就包含的,我们的在线导入导出功能就是使用的该js。

小雷 发表于 2018-7-12 11:10:56

resource.prooerties文件找不到?

Clark.Pan 发表于 2018-7-16 09:50:38

小雷 发表于 2018-7-12 11:10
resource.prooerties文件找不到?

这个是Spring MVC里面的一个设置,将配置中关于resource.prooerties的设置删掉就可以了

tong123456 发表于 2019-2-14 13:22:00

有没有c# 版

dexteryao 发表于 2019-2-14 16:57:23

tong123456 发表于 2019-2-14 13:22
有没有c# 版

服务端只需要接受post回来的stream即可,将stream 保存为xlsx 文件。

Clark.Pan 发表于 2019-2-19 18:14:41

tong123456 发表于 2019-2-14 13:22
有没有c# 版

没有,不过原理是一样的,导入都是通过XMLHttpRequest去请求服务器端的Excel
导出就是将前端生成的blob流传递给后端并转存成xlsx格式的文件
页: [1] 2 3 4
查看完整版本: JAVA应用SpreadJS实现服务器端导入导出