找回密码
 立即注册

QQ登录

只需一步,快速开始

码出一个新世界

初级会员

54

主题

144

帖子

398

积分

初级会员

积分
398

微信认证勋章

码出一个新世界
初级会员   /  发表于:2016-4-18 10:20  /   查看:6470  /  回复:11
我的目的是想做一个新增功能的Spread,把一个做好的表单模板加载到Spread里,代码如下:            
            string path = HttpContext.Current.Server.MapPath("~/Templates/新增数据源.xlsx");
            FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read);
            DataSourceSP.Open(stream);
            DataSourceSP.Sheets[0].AllowPage = false;
但是Open之后下面的操作报错,大概意思说是没有找到Sheet页,如下,请问是什么原因?
异常信息.png

11 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-18 10:25:03
沙发
spread中没有sheet,您需要先新建一个sheetview,添加后再调用sheets【0】
回复 使用道具 举报
码出一个新世界
初级会员   /  发表于:2016-4-18 10:43:22
板凳
在这之前有AddSheet的操作,具体方法如下:
       // 初始化模板
        private void InitializeSheetView()
        {
            SheetSkin skin = DataSourceSP.Sheets[0].ActiveSkin;
            DataSourceSP.Reset();
            DataSourceSP.EditModePermanent = true;
            DataSourceSP.Sheets.Clear();
            DataSourceSP.Sheets.Add(new SheetView());
            DataSourceSP.UseClipboard = false;
            DataSourceSP.ClientAutoCalculation = true;
            DataSourceSP.Open(DataTools.GetTemplateStream());
            DataSourceSP.Sheets[0].AllowPage = false;
            DataSourceSP.Sheets[0].AutoCalculation = true;
            DataSourceSP.Sheets[0].Protect = true;

            //// 初始化组合框单元格类型
            DataSourceSP.Sheets[0].ActiveSkin = skin;
            DataSourceSP.Sheets[0].LockBackColor = System.Drawing.Color.LightGray;
        }
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-18 11:37:10
地板
这个您的在DataSourceSP.Sheets[0].AllowPage = false; 打断点调试下,看看sheets的count,是不是您InitializeSheetView 的时机不对,
回复 使用道具 举报
码出一个新世界
初级会员   /  发表于:2016-4-18 11:39:13
5#
sheets的count是0,从报的错就能知道
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-18 12:07:09
6#
那就是您执行   DataSourceSP.Sheets[0].AllowPage = false; 没有执行 InitializeSheetView ,或者 有其他什么操作又清空了sheets这个地单步调试下,看为什么没有add上sheet或者哪里删除了sheet
回复 使用道具 举报
码出一个新世界
初级会员   /  发表于:2016-4-18 12:45:19
7#
没有地方删除,我把
            DataSourceSP.Open(DataTools.GetTemplateStream());
换成
            DataSourceSP.OpenExcel(this.Server.MapPath(@"\Templates\新增数据源.xlsx"));
就可以,但是这种OpenExcel的方式 加载到Spread里面是不可编辑的,无法做新增表单
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-18 13:34:16
8#
open 是打开xml格式的stream,您打开了一个xlsx。问题应该在这。
Open 是有返回值的,你看是true还是false,是不是open失败了。
回复 使用道具 举报
码出一个新世界
初级会员   /  发表于:2016-4-18 13:57:52
9#
哦 , 那这个问题就是这个原因,Open打开的是XML文件的Stream,那如果我要是做添加功能的表单的话,就只能用XML来画模板吗,请问Spread的新增数据功能如何实现,有没有完整的demo解说一下呀
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-18 15:57:30
10#
OpenExcel也是支持steam的。您直接用OpenExcel就好了

OpenExcel(Stream) Method

评分

参与人数 1满意度 +5 收起 理由
码出一个新世界 + 5 很给力!

查看全部评分

回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部