找回密码
 立即注册

QQ登录

只需一步,快速开始

byf
注册会员   /  发表于:2017-12-12 11:49:21
11#
dexteryao 发表于 2017-12-11 17:13
mbgs里是中间那一步的数据?
ExcelIO 本身就是.net 组件,为什么您不直接使用呢,要部署成服务去用呢。



3
主题
712
帖子
4万
积分

积分47683
沙发
发表于 2014-11-28 09:15:00 | 只看该作者


SpreadJS 目前的版本只支持使用 Server 做 ExcelIO 导入导出,你可以另外部署一个Server(可以是虚机)专门做导入导出。
我们今后会支持不需要IIS就能部署的ExcelIO server,也有可能会支持纯客户端的导入导出。但是发布日期未定




image.png798513488.png
image.png427535399.png
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-12-12 17:38:14
12#
明白了, 您先在的流程是 有一个spreadJS生成的json ,然后需要在WPF端展示出来。
那确实是只能您这样了,还是前面问的那个问题,提供的数据是那个环节的,或者您能否提供一个spreadjs的json。我从源头试试。
回复 使用道具 举报
byf
注册会员   /  发表于:2017-12-13 16:30:48
13#
你好,附件中是转换后的json数据,mbgs数据是通过下面: /// <summary>
        /// JSON转化为内存流
        /// </summary>
        /// <param name="json"></param>
        public  MemoryStream FromJSON(string mbgs)
        {
            try
            {
                json = DecompressString(mbgs);

                 string   m_BaseAddressExcelIO = "http://192.168.1.3";

                if (!string.IsNullOrEmpty(m_BaseAddressExcelIO))
                {
                    // 通过远程服务获取json数据
                    return FromJSON(json, m_BaseAddressExcelIO);
                }
                else
                {
                    return null;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

  public  string DecompressString(string str)
        {
            try
            {
                if (string.IsNullOrEmpty(str) || str[0] == '{') return str;
                string compressString = "";
                //byte[] compressBeforeByte = Encoding.GetEncoding("UTF-8").GetBytes(str);   
                byte[] compressBeforeByte = Convert.FromBase64String(str);
                byte[] compressAfterByte = Decompress(compressBeforeByte);
                compressString = Encoding.GetEncoding("UTF-8").GetString(compressAfterByte);
                return compressString;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

这个方法转换成json数据的。转化后再通过下面

/// <summary>
        /// JSON转化为内存流
        /// </summary>
        /// <param name="json"></param>
        private  MemoryStream FromJSON(string json, string excelIOBaseAddress)
        {
            try
            {
                if (string.IsNullOrEmpty(json)) return null;
                EPWebClient webClient = new EPWebClient();
                System.Collections.Specialized.NameValueCollection formData =
                    new System.Collections.Specialized.NameValueCollection();
                formData["type"] = "application/json";
                formData["data"] = "{\"spread\":" + json + "}";
                string uri = excelIOBaseAddress + "/SourceCode_ExcelIO/xsapi/export";
                byte[] result = webClient.UploadValues(uri, "POST", formData);
                return BytesToStream(result); ;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

这个方法转换为内存流,然后再
using (var stream = FromJSON(jsonData))
                {
                    if (stream == null) return;
                    gcSpreadSheet.OpenExcel(stream);
                    stream.Close();
                }


OpenExcel(stream)打开。



jsonData.rar

4.96 KB, 下载次数: 116

json数据

回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-12-13 17:34:58
14#
收到,测试给您答复
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-12-14 15:12:43
15#
您好,没有重现您的问题,我先打开之前有问题的excel文件
image.png305235595.png

然后点击打开报表,将您提供的json提交excelIO转换成excel文件再打开,还会显示
image.png965890197.png
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部