找回密码
 立即注册

QQ登录

只需一步,快速开始

zysfaithboy

银牌会员

4

主题

11

帖子

2892

积分

银牌会员

积分
2892

活字格认证

最新发帖
zysfaithboy
银牌会员   /  发表于:2014-11-17 12:17  /   查看:8114  /  回复:6
功能上需要实现对用spread加载的一个Exl文件该文件里有一个现有的Sheet页作被复制对象,先要实现多次Sheet页复制功能(样式、数值都要被复制)有什么好方法么?
我尝试用Save/OpenXml方式实现,序列化的速度很好但是反序列化的时间太长了一个页复制需要30S,能否有方法提高效率?

6 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2014-11-17 15:27:00
沙发
回复 1楼zysfaithboy的帖子

你好,

请问导出的 Sheet 有多少数据量,最好能够把 Excel 上传到论坛我们看下是否有优化方法。

如果是公式或者格式过多,可能没有什么更好的办法来优化。

谢谢
回复 使用道具 举报
zysfaithboy
银牌会员   /  发表于:2014-11-17 16:22:00
板凳
回复 2楼iceman的帖子

好的 文件里面是一个测试表 进行复制的代码如下   
public Worksheet CopySheet (Worksheet sheet,string newName)
        {
             Worksheet newSheet = null;
            if (sheet != null)
            {
              
                MemoryStream ms = new MemoryStream();
                XmlWriter writer = XmlWriter.Create(ms);
                sheet.SaveXml(writer);
                writer.Close();
              
                ms.Position = 0;
                XmlReader reader = XmlReader.Create(ms);
                newSheet = new Worksheet(newName);
                newSheet.OpenXml(reader);
                reader.Close();
            }
            return newSheet;
        }

测试表格.rar

48.59 KB, 下载次数: 523

回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-11-17 17:44:00
地板
回复 3楼zysfaithboy的帖子

感谢反馈,调查后给出进一步结果。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-11-19 13:45:00
5#
回复 4楼iceman的帖子

使用你提供的 Excel 我制作了一个测试Demo,没有重现问题,加载时间1~2s。请下载测试看能否重现问题:
VS2013+Spread 4.0.20132.342 + C#:
14334_2.zip (2.67 MB, 下载次数: 544)
回复 使用道具 举报
zysfaithboy
银牌会员   /  发表于:2014-11-26 15:17:00
6#
回复 5楼iceman的帖子

感谢 问题已经解决  版本问题 之前的太老了 引用V4版本后复制200个在3S左右达到预期效果
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-11-27 09:28:00
7#
回复 6楼zysfaithboy的帖子

好的,感谢您的反馈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部