找回密码
 立即注册

QQ登录

只需一步,快速开始

alofa

高级会员

5

主题

23

帖子

1488

积分

高级会员

积分
1488

活字格认证

alofa
高级会员   /  发表于:2014-7-22 19:09  /   查看:9808  /  回复:11
spread studio for asp.net带有公式的单元格设置margin无效
开发环境:Vs2012+spread studio for asp.net 7 +IE11+win764sp1
问题描述:导入excel模板,大部分是空的,通过程序赋值之后,在后台通过以下语句设定单元格内文字左边距 及数字格式单元格右边距
FpSpread1.ActiveSheetView.Cells[3, 8, 95, 8].Margin.Left = 3;
FpSpread1.ActiveSheetView.Cells[3, 9, 72, 11].Margin.Right = 3;
会出现部分单元格没有效果:
数字的上述代码设置无效的都是在模板excel中有计算公式的(类似=SUM(D417)这类简单的加减计算)
文字部分上述代码无效的没有找出规律,但目前发现通过上述范围设定边距,如果范围内有合并单元格,合并单元格之后的会受到影响,但也不是全部
上述问题如何解决,谢谢

11 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2014-7-23 20:14:00
沙发
回复 1楼alofa的帖子

能否请你把 Excel 模板发上来我用于重现问题?
回复 使用道具 举报
alofa
高级会员   /  发表于:2014-7-31 17:38:00
板凳

还是我那个测试兼容性的例子

demo(qq微云)下载地址:
http://url.cn/NQ6W1s
vs2012+spread for asp.net 7 v3
在此demo中,模板比较复杂,有很多合并单元格,通过一下语句设置
FpSpread1.ActiveSheetView.Cells[4, 2, 5, 2].Margin.Left = 3;这句应该是设置第五行第二列到第六行第二列2个单元格左边距为3,我的理解没错吧?这样设置后,效果如下图

bianjuwenti.png
可以看到,第二行边距设置无效

通过这条语句
FpSpread1.ActiveSheetView.Cells[4, 5, 15, 5].Margin.Right = 3;设置数字单元格右边距为3
效果如上图,可以看到有公式的单元格右边距远远超出3,有些单元格却没起作用
测试环境IE8和IE11
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-7-31 18:57:00
地板
回复 3楼alofa的帖子

好的,附件我已经下载,调查后反馈给你。
回复 使用道具 举报
alofa
高级会员   /  发表于:2014-8-1 10:31:00
5#
期待好消息哈
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-8-4 17:36:00
6#
回复 5楼alofa的帖子

请问您这的电话是多少?有些问题需要和您电话沟通,可以通过短消息发送给我。
回复 使用道具 举报
alofa
高级会员   /  发表于:2014-8-9 22:38:00
7#
不好意思,这段时间出差,一直没来论坛,我的电话已短消息发送,感谢解惑
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-8-11 17:52:00
8#
回复 7楼alofa的帖子

好的,已经通过电话沟通,等您上传好 demo 后我再跟进调查。
回复 使用道具 举报
alofa
高级会员   /  发表于:2014-8-12 08:17:00
9#
demo qq微云下载地址:
http://url.cn/RpwK6M
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-8-12 11:25:00
10#
回复 9楼alofa的帖子

调查结果如下:
1.如果通过cell[0,0,1,3]这种方式设置,只有 Cell[0,0] 启作用,需要逐个单元格遍历设置。
2.公式单元格不起作用的原因是单元格类型引起的,请设置需要设置margin的单元格类型为doublecelltype。
测试代码:

  1.             FarPoint.Web.Spread.DoubleCellType db = new FarPoint.Web.Spread.DoubleCellType();

  2.             for (int i = 0; i < this.FpSpread1.Sheets[0].Rows.Count-1; i++)
  3.             {
  4.                 for (int j = 0; j < this.FpSpread1.Sheets[0].Columns.Count; j++)
  5.                 {
  6.                     this.FpSpread1.Sheets[0].Cells[i, j].CellType = db;
  7.                     this.FpSpread1.Sheets[0].Cells[i, j].Value = 12;
  8.                     this.FpSpread1.Sheets[0].Cells[i, j].Margin.Right = 12;
  9.                 }
  10.             }

  11.             this.FpSpread1.Sheets[0].Rows[2].Formula = "SUM(A1:A2)";
  12.             this.FpSpread1.Sheets[0].Rows[2].CellType = db ;
  13.             this.FpSpread1.Sheets[0].Cells[2, 0].Margin.Right = 12;
  14.             this.FpSpread1.Sheets[0].Cells[2, 1].Margin.Right = 12;
  15.             this.FpSpread1.Sheets[0].Cells[2, 2].Margin.Right = 12;
复制代码
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部