setTimeout(function () {
document.getElementById('FpSpread_Report').Update();
}, 90);
});
现在没办法,只能前台加载完成之后刷新一次,但是会影响效果和效率 回复 11楼seasky083的帖子
经产品组确认,该问题是 Spread 产品bug,在后续版本中会修复。
您9#中描述的问题我这边没有重现,能否提供Demo过来,我们这边重现后看能否提供给您 work around 暂时解决使用问题。
附件如上,麻烦尽快解决问题,急用,已是金牌客户 回复 13楼seasky083的帖子
抱歉,当前这个代码逻辑不是十分清楚,目前运行起来后Sheet1 的Cell【0,0】中仅仅设置了文本,并没有公式?请问如何重现问题? 如果你跟代码的话就可以看到,我里面用了try catch,代码逻辑是这样的,把excel中单元格的内容先放到dictionary中(我这里需要分解公式,到数据库中提取数据
这边没有提取数据,直接复制到Formula中了),然后在
//将对应!公式替换掉
for (int k = 0; k < _SheetListNon.Count; k++)
{
foreach (KeyValuePair<string, string> cellNon in _SheetListNon)
{
string[] key = cellNon.Key.Split('-');
int x = int.Parse(key);
int y = int.Parse(key);
try
{
//判断能否找到对应的数据
//就是这个地方找不到对应的源-错误消息:无效的源名称 Error offset: 0
test.Sheets.Cells.Formula = cellNon.Value.Substring(1);
}
catch
{
//找不到直接将公式赋值给单元格
test.Sheets.Cells.Text = cellNon.Value.Substring(1);
}
}
}
红色部分出错了,你可以看一下 回复 15楼seasky083的帖子
问题已经清楚了,感谢详细讲解。已经提高优先级,并且发送给产品组。
由于产品使用问题给您带来不便,抱歉。 回复 15楼seasky083的帖子
请使用以下代码测试,在设置公式之前把 EnableCrossSheetReference设置为 true:
public ActionResult Index(FarPoint.Mvc.Spread.FpSpread test)
{
//string str = "'需关闭''帖子'!A19+需解决帖子!A19";
//Regex r = new Regex(@"('([^']|'')+'|(?<=^|[+\-*\/^&%]).+(?=\!\w+(?:$|[+\-*\/^&%])))");//@"(?<=^|[+\-*\/^&%])('([^']|'')+'|.+?(?=\!\w+(?:$|[+\-*\/^&%])))"
//MatchCollection ma = r.Matches(str);
test.Sheets.Clear();
FpSpread book = new FpSpread();
book.OpenExcel(this.Server.MapPath("aa.xlsx"));
int i = 0;
test.EnableCrossSheetReference = false;//turn off this flag before open excel
List<Dictionary<string, string>> _SheetListNon = new List<Dictionary<string, string>>();
foreach (FarPoint.Web.Spread.SheetView sheet in book.Sheets)
{
Dictionary<string, string> dicSheetNon = new Dictionary<string, string>();
FpSpread bookIn = new FpSpread();
bookIn.Sheets.Add(sheet);
MemoryStream ms = new MemoryStream();
bookIn.SaveExcel(ms);
byte[] b = ms.ToArray();
FarPoint.Web.Spread.SheetView sv = new FarPoint.Web.Spread.SheetView();
sv.SheetName = sheet.SheetName;
test.Sheets.Add(sv);
sv.OpenExcel(new MemoryStream(b), 0);
int maxrow = sv.RowCount;
int maxcol = sv.ColumnCount;
//这里将对应的excel单元格内容提取出来(以!号开头的)
for (int k = 0; i < maxrow; i++)
{
for (int j = 0; j < maxcol; j++)
{
string s = sv.Cells.Text;
string formula = sv.Cells.Formula;
if (!string.IsNullOrEmpty(s) && string.IsNullOrEmpty(formula))
{
if (s == '!')
{
dicSheetNon.Add(k + "-" + j, s);
}
}
}
}
_SheetListNon.Add(dicSheetNon);
i++;
}
//将对应!公式替换掉
test.EnableCrossSheetReference = true;//turn off this flag before open excel
for (int k = 0; k < _SheetListNon.Count; k++)
{
foreach (KeyValuePair<string, string> cellNon in _SheetListNon)
{
string[] key = cellNon.Key.Split('-');
int x = int.Parse(key);
int y = int.Parse(key);
try
{
//判断能否找到对应的数据
//就是这个地方找不到对应的源-错误消息:无效的源名称 Error offset: 0
//test.Sheets.Cells.Formula = cellNon.Value.Substring(1);
test.Sheets.SetFormula(x, y,cellNon.Value.Substring(1));
}
catch
{
//找不到直接将公式赋值给单元格
test.Sheets.Cells.Text = cellNon.Value.Substring(1);
}
}
}
test.Sheets.PageSize = 30;
test.Width = 1200;
test.Height = 500;
//test.Sheets.Cells.Formula = "!'Sheet2'!A1".Substring(1);
return View();
}
回复 15楼seasky083的帖子
很高兴能够协助您解决问题。有后续问题请开新帖沟通。
为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢
http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062
页:
1
[2]