找回密码
 立即注册

QQ登录

只需一步,快速开始

gw0506
超级版主   /  发表于:2011-3-2 18:00:00
11#
你通过下面的代码,将其保存成Excel2007格式就正常了。
  1.             
  2. string XLS_FullName = @"D:\exportexcel.xlsx";
  3. this.fpSpread1.SaveExcel(XLS_FullName, FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat);
复制代码
另外,你这个问题,之前我们讨论过,你可以回顾一下
http://gcdn.grapecity.com/showtopic-889.html

总的来说,Excel2003和Excel2007对公式的解析存在兼容性问题。如果你的用户只用Excel2003,你就应该在Excel2003中编辑好公式,然后设置给Spread,这样将来导出到Excel2003才是正常的。
回复 使用道具 举报
xiwu
中级会员   /  发表于:2011-3-3 14:11:00
12#
是讨论过的,
我这个excel表是在spread中编好的公式导出来的,,出错的公式似乎没法在excel中事先设好,因为行数不定,并且在excel中输入是以“数组”的形式数入的,与spread似乎不一样,
回复 使用道具 举报
xiwu
中级会员   /  发表于:2011-3-3 14:13:00
13#
另外,程序现在是支持2003,因为用户都是用的excel2003,,
回复 使用道具 举报
gw0506
超级版主   /  发表于:2011-3-3 14:30:00
14#
Spread支持多种公式形式,同时兼容Excel的输入形式。具体可以参考Formula Referance文档。

导入到2003后,这些出错的公式列提示是有不合适的数据类型,如果双击有问题的单元格,再回车,excel会重新计算并且返回正确的值。

因此,很可能通过CellType的设置,或者公式中添加类型转化就可以解决该问题。所以建议你在查阅Formula Referance的同时,对比一下Excel的公式文档。
回复 使用道具 举报
xiwu
中级会员   /  发表于:2011-3-5 10:45:00
15#
再问:我的目的是想统计一个数据在一个区间出现的次数,spread还有其它函数可以完成吗??
回复 使用道具 举报
xiwu
中级会员   /  发表于:2011-3-7 10:03:00
16#
for (int k = 0; k < 6; k++)
                {
                    string FormlaString = "INDEX(FREQUENCY(R4C" + (k * 2 + 2).ToString() + ":R1000C" + (k * 2 + 2).ToString() + ",R4C16" + ":R" + (LinRow + 2).ToString() + "C16" + ")," + (i + 2).ToString() + ")";
                    sv_洞室表.Cells[i + 3, k + 18].Formula = FormlaString;
                }

以上是赋公式的代码,能不能改为将index(...)计算的结果填入sv_洞室表.Cells[i + 3, k + 18]单元格中?这个我不会写了
回复 使用道具 举报
gw0506
超级版主   /  发表于:2011-3-7 10:39:00
17#
如果是想直接填入结果,你可以通过代码来实现算法,然后直接填入结果。
回复 使用道具 举报
xiwu
中级会员   /  发表于:2011-3-7 14:23:00
18#
不能运用FREQUENCY公式吗?
回复 使用道具 举报
gw0506
超级版主   /  发表于:2011-3-7 14:35:00
19#
自己写代码,肯定不能用了。
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部