找回密码
 立即注册

QQ登录

只需一步,快速开始

sxyweiren

中级会员

73

主题

366

帖子

755

积分

中级会员

积分
755

活字格认证微信认证勋章

sxyweiren
中级会员   /  发表于:2013-9-4 10:31  /   查看:13161  /  回复:13
现在有一批VB6的Source,使用的是Spread2.5,想要把他们批量导入到经过升级到VB.net的Layout里面去。

现在有的Spread有没有提供这种接口?把Com组件的Spread批量升级成Spread7.0???

能不能做成一个程序把当前系统下的所有的Spread的布局给导出来?最好导成Spread7那种可读的而不是Com组件的那种二进制文件?

13 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-9-4 12:57:00
沙发
回复 1楼sxyweiren的帖子

sxyweiren 你好,

Spread COM 2.5 是比较早的版本。我本机没有安装。不过,通过,Spread COM 8.0 测试。如果希望复用 COM版模板,只能保存为 Excel 文档。

建议使用 Spread 设计器进行模板定制,和 Excel 操作方法类似,可快速定制模板。并且 .NET 版本有很多的新增功能,像图表、波形图、条件格式化等数据可视化效果;类似于 Excel 的过滤功能。相信会增强用户体验。

.NET 版兼容 COM 版功能,可以放心迁移平台。但由于接口差异很大,制作转换程序工作量目前无法估计,不推荐这样做。
回复 使用道具 举报
sxyweiren
中级会员   /  发表于:2013-9-13 11:40:00
板凳
回复 2楼iceman的帖子

哦,那Com版本的Spread导出的二进制文件如何识别?

如何能够把Com版本的二进制文件给读出来?Com版本的Spread导出来的二进制文件是如何识别然后转换成Spread的Designer文件的?能不能讲一下思路?

因为我们公司很大业务是做VB6到VB.net的升级的,由于大部分的项目里面都使用了Spread,所以希望能够用工具来完成这项业务,因为手动对应的话有的担当会弄出很多Bug来。麻烦你们了。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-9-13 17:21:00
地板
回复 3楼sxyweiren的帖子

sxyweiren

Spread for WinForms中提供了fpSpread1.OpenSpreadFile方法用于加载旧版Spread保存的文件,你可以先尝试通过该方法是否可以读取你原来保存的文件。
回复 使用道具 举报
sxyweiren
中级会员   /  发表于:2013-9-15 14:46:00
5#
回复 4楼dof的帖子

嗯,好的。
我先试试这个方法好用么。
谢谢了。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-9-16 09:02:00
6#
回复 5楼sxyweiren的帖子

请问现在问题进展如何?
回复 使用道具 举报
sxyweiren
中级会员   /  发表于:2013-9-16 15:34:00
7#
回复 6楼iceman的帖子

没什么进展呢。

主要是没有方向。

Com组件的Spread的属性保存在资源文件(resx)里面,从里面往外抽出比较困难。
Com组件Spread导出的SS2文件属于二进制文件,往Spread7里面导入,Spread7本身有这个功能。单独实现这个过程没什么意义。

所以如果想要完成设想,最少要用工具实现自动检测工程里面的所有的Spread,并且可以读出resx里面的所有配置,并且根据配置来实现Spread7的Designer.Vb文件的生成。这个过程比较复杂啊。。

版主有啥想法没?一起探讨下。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-9-16 16:39:00
8#
回复 7楼sxyweiren的帖子

sxyweiren 你好,

我理解你的问题是要复用 Spread COM 版的样式模板。
我进一步解释下 4# 方法。
1.Spread COM 可以通过 SaveToFile 方法把当前 Spread 保存为 .ss 格式文件,方法如下:

  1. fpSpread.SaveToFile(ByVal FileName As String, ByVal DataOnly As Boolean) As Boolean
复制代码


2.Winform 平台下 Spread 提供 OpenSpreadFile 方法,专门用于打开该特有格式的文件:

  1. this.fpSpread1.OpenSpreadFile("sscom8.ss8",0);
复制代码


所以,综合以上两点,我想你先要做的是把原项目中的模板都保存为 ss 文件。再通过 Spread Winform 版本打开。

不知道我理解的是否正确?

或者请你在详细解释下 7 # 的描述。我不太理解。
回复 使用道具 举报
sxyweiren
中级会员   /  发表于:2013-9-16 16:53:00
9#
回复 8楼iceman的帖子

嗯,可能我的描述有点问题。

7#的想法是这样的,
我做成了一个程序,需要完成这样一个功能。
1,选中一个VB6的工程(VBP),然后选中一个VB.net的工程(。VBproj).其中VB.net的工程是由VB6的工程升级得到的,没有经过任何手动的修改。
2,点击OK按钮后,程序自动识别VB6里面的所有的Spread控件,然后去资源文件里面读取Spread的属性。
3,程序把上面2中读取到的属性生成到VB.net的对应的Form的designer文件里面去。
4,双击打开工程,能够看到一个跟VB6一模一样的画面结构(Spread的属性已经设置好了。)
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-9-16 17:43:00
10#
回复 9楼sxyweiren的帖子


不好意思。第 2、3 步,无法给出快捷的解决方法。
需要把COM版接口一 一对应到 .NET 版本中,只能手动查找对应关系,确实比较困难,如果在查找对应接口方面遇到问题可以提出来,我协助查找。

OpenSpreadFile 专门为 COM 版升级到 .NET 版本提供,虽然需要手动保存,但我还是建议通过这种方法做。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部