找回密码
 立即注册

QQ登录

只需一步,快速开始

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证

超级版主

200

主题

9899

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
15531

讲师达人悬赏达人微信认证勋章SpreadJS 认证SpreadJS 高级认证元老葡萄

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-18 15:06  /   查看:23074  /  回复:31
本帖最后由 ClarkPan 于 2019-1-20 22:56 编辑

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

从服务器端导入Excel:
这部分使用纯前端实现。然后下载到前端直接打开,核心代码如下:
  1. var excelIo = new GC.Spread.Excel.IO();
  2.     var excelFilePath = 'resources/Excel/importExcel.xlsx';
  3.     var xhr = new XMLHttpRequest();
  4.     xhr.open('GET', excelFilePath, true);
  5.     xhr.responseType = 'blob';   
  6.     xhr.onload = function(e) {
  7.       if (this.status == 200) {
  8.         // get binary data as a response
  9.         var blob = this.response;
  10.         // convert Excel to JSON
  11.         excelIo.open(blob, function (json) {
  12.             var workbookObj = json;
  13.             spread.fromJSON(workbookObj);
  14.         }, function (e) {
  15.             // process error
  16.             alert(e.errorMessage);
  17.         }, {});
  18.       }
  19.     };
  20.      
  21.     xhr.send();
复制代码

导出Excel保存至服务器端:
这部分使用前端导出功能与后端java结合的方式来实现,首先通过前端Excel导出,生成导出文件,然后通过formdata来承载导出文件,之后通过ajax将formdata传至后端java。后端java使用文件操作将文件保存至服务器端。
这里有以下需要注意的地方:
formdata没有办法改变enctype,而我们需要的用entype为multipart/form-data类型的form来承载导出文件。这里需要在jsp页面上创建一个空的form,并将其entype设置为multipart/form-data:
  1. <form name="myform" id="myform" enctype="multipart/form-data" method="post"></form>
复制代码
之后js中只需要初始化一个该form的formdata实例即可:
  1. var fd = new FormData(document.forms.namedItem("myform"));
复制代码
全部代码已经上传附件,可以下载进行参考。

SpreadJS_Demo3.zip

1.78 MB, 下载次数: 1568

31 个回复

正序浏览
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-9-2 19:00:11
32#
您再具体描述下您的需求,纯前端无法实现后端服务的导入导出,可以两者结合,具体的demo见之前的附件中。
回复 使用道具 举报
Hyao
注册会员   /  发表于:2022-9-2 14:32:17
31#
有没有前端的demo做个参考 image.png975950927.png
image.png46134032.png
image.png851777953.png
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-10-27 09:29:13
30#
四夕羽 发表于 2020-10-22 20:09
从服务器端导入excel的时候, 碰到了跨域的问题, 请问咱们有这样的问题反馈吗, 又该怎么解决呢

跨域有可能因为导入的Excel文件没有跟部署工程在同一个域下,需要将服务端导入的文件放在同一工程目录下或者做专门的跨域处理(可以自行上网搜索跨域相关资料)。
回复 使用道具 举报
四夕羽
金牌服务用户   /  发表于:2020-10-22 20:09:39
29#
ClarkPan 发表于 2020-10-20 09:44
支持的,V10版本之后服务器端导入导出方式没有变化

从服务器端导入excel的时候, 碰到了跨域的问题, 请问咱们有这样的问题反馈吗, 又该怎么解决呢
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-10-20 09:44:12
28#
支持的,V10版本之后服务器端导入导出方式没有变化
回复 使用道具 举报
zivensfw
注册会员   /  发表于:2020-10-16 16:56:07
27#
你好,请问这个最新的13.2.0版本不支持吗?用你样例的10.0.1版本没问题,换成高版本就不行。提示Incorrect file format
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-5-11 09:35:33
26#
魏孟溁 发表于 2020-5-8 17:27
我点击导入时候那个excel只有一个sheet,为什么界面上显示两个sheet呢?

这个是因为您用的是试用版,试用版会多出一个sheet用来提示试用版授权信息
回复 使用道具 举报
魏孟溁
注册会员   /  发表于:2020-5-8 17:27:19
25#
我点击导入时候那个excel只有一个sheet,为什么界面上显示两个sheet呢?
image.png685579528.png
回复 使用道具 举报
魏孟溁
注册会员   /  发表于:2020-5-8 16:23:32
24#
var excelFilePath = 'resources/Excel/importExcel.xlsx';
请问这句话是通过路径读取excel吗?我把excel放到项目里,进行读取,按照这个方法不成功,怎么回事?谢谢
回复 使用道具 举报
1234下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部