找回密码
 立即注册

QQ登录

只需一步,快速开始

karaiwasabi

中级会员

31

主题

54

帖子

733

积分

中级会员

积分
733
karaiwasabi
中级会员   /  发表于:2019-12-6 11:21  /   查看:7332  /  回复:12
1金币
使用Spread的SaveExcel方法,saveFlags如果指定为UseOOXML,文件保存为.xls文件后,打开文件会提示内容和后缀不一致的警告。
如果把UseOOXML参数去掉,貌似默认存储格式就是OOXML,打开.xls文件还是会提示内容和后缀不一致的警告。
是否有一个Flag可以让文件格式使用Excel97-2003格式进行存储,这样打开文件的时候就不会提示错误了。谢谢

12 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-12-6 12:16:26
沙发
直接调用SaveExcel ,就是保存03格式的,给个能重现问题的Demo
回复 使用道具 举报
karaiwasabi
中级会员   /  发表于:2019-12-6 15:58:01
板凳
dexteryao 发表于 2019-12-6 12:16
直接调用SaveExcel ,就是保存03格式的,给个能重现问题的Demo

谢谢。已经按照03格式生成Excel了,但是有个问题,生成的Excel如果用SpecialCells(xlCellTypeLastCell)取最后有效列的时候,直接返回了最大列256,无法根据实际使用区域返回最大列。旧版本Activex的不存在这个问题。请问这是产品升级的变更点吗?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-12-6 16:05:38
地板
这个要具体问题具体分析了,和您对模版的操作方式有关,对样式的操作整行的操作也肯能影响最后编辑区域。
回复 使用道具 举报
karaiwasabi
中级会员   /  发表于:2019-12-6 16:24:51
5#
dexteryao 发表于 2019-12-6 16:05
这个要具体问题具体分析了,和您对模版的操作方式有关,对样式的操作整行的操作也肯能影响最后编辑区域。

没有任何模板,就是单纯一个Spread绑定一个DataTable然后SaveExcel,也没有对格式进行任何形式的操作
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-12-6 17:23:16
6#
您现在用的那个版本,DataTable有多少列? 最好能给我个直接重现问题的Demo,我这个重现,看有没有方案。
回复 使用道具 举报
karaiwasabi
中级会员   /  发表于:2019-12-6 19:09:34
7#
dexteryao 发表于 2019-12-6 17:23
您现在用的那个版本,DataTable有多少列? 最好能给我个直接重现问题的Demo,我这个重现,看有没有方案。

工程代码已经上传。您可以在VBA中使用SpecialCells(xlCellTypeLastCell).Column获取最后一列,或者打开后直接按Ctrl+End,它都会指向最后一列256。谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
karaiwasabi
中级会员   /  发表于:2019-12-6 20:35:46
8#
karaiwasabi 发表于 2019-12-6 16:24
没有任何模板,就是单纯一个Spread绑定一个DataTable然后SaveExcel,也没有对格式进行任何形式的操作

另外还请教一个问题,在使用SaveExcel保存Excel的时候,列宽不会根据列内容自动适应,有什么方法能让SaveExcel保存的Excel文件列宽自动适应?就像双击Excel列边框的效果?谢谢
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-12-9 16:34:27
9#
保存时候没有这样的选项,您需要在保存前先调整好列宽,用fpSpread1.ActiveSheet.GetPreferredColumnWidth方法可以获取到最适应的列宽
回复 使用道具 举报
karaiwasabi
中级会员   /  发表于:2019-12-11 15:38:05
10#
dexteryao 发表于 2019-12-9 16:34
保存时候没有这样的选项,您需要在保存前先调整好列宽,用fpSpread1.ActiveSheet.GetPreferredColumnWidth ...

我使用下面的代码,想实现列宽度以包含列头在内所有单元格最宽的尺寸设定,但是效果没有出来,还是以单元格数据的最大尺寸设定的。请问应该怎样去改?谢谢
fpspread.ActiveSheet.Columns(i).Width = fpspread.ActiveSheet.GetPreferredColumnWidth(i, False)
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部