找回密码
 立即注册

QQ登录

只需一步,快速开始

wanghaibo
论坛元老   /  发表于:2014-9-23 15:01  /   查看:10115  /  回复:10
我是给spread每个单元格赋值
    for (int sheet = 0; sheet < this.fspMain.Sheets.Count; sheet++)
                {
                    for (int row = 0; row < this.fspMain.Sheets[sheet].Rows.Count; row++)
                    {
                        curProgressBar.Value = curProgressBar.Value + 1;

                        Application.DoEvents();

                        List<ReportIndexEntity> lstRIE = new List<ReportIndexEntity>();

                        lstRIE = _listReportIndex.FindAll(obj => obj.Sheet == sheet &amp;&amp; obj.CellRow == row &amp;&amp; this.fspMain.Sheets[obj.Sheet].Cells[obj.CellRow, obj.CellColumn].Text == "" &amp;&amp; obj.DataSourceFunction != null &amp;&amp; obj.DataSourceFunction != "" &amp;&amp; obj.BegDateTimeFunction != null &amp;&amp; obj.BegDateTimeFunction != "" &amp;&amp; obj.DataSourceFunction != null &amp;&amp; obj.DataSourceFunction != "");

                        lstSQL = "";

                        foreach (ReportIndexEntity ri in lstRIE)  //遍历所有单元格配置信息列表
                        {
                            try
                            {
                                sql = new GetDataSourceSQLBll().GetAllCellSQLString(ri, ucReportDateTime.SelectDateTimeBeg, MenuId);
                            }
                            catch
                            {
                                sql = null;
                            }

                            if (sql != null &amp;&amp; sql != "")
                            {
                                if (lstSQL != "")
                                {
                                    lstSQL = lstSQL + "UNION ALL(" + sql + ")";
                                }
                                else
                                {
                                    lstSQL = "(" + sql + ")";
                                }
                            }

                        }

                        if (lstSQL != "")
                        {
                            try
                            {
                                lstReportCellDataEntity = refreshDatabll.RefreshDatas(lstSQL);

                                foreach (ReportCellDataEntity rcde in lstReportCellDataEntity)
                                {
                                    try
                                    {
                                        if (Convert.ToDouble(rcde.IndexData) == 0)
                                        {
                                            this.fspMain.Sheets[rcde.Sheet].Cells[rcde.CellRow, rcde.CellColumn].Text = null;
                                        }
                                        else
                                        {
                                            this.fspMain.Sheets[rcde.Sheet].Cells[rcde.CellRow, rcde.CellColumn].Text = rcde.IndexData;
                                        }
                                    }
                                    catch
                                    {
                                        this.fspMain.Sheets[rcde.Sheet].Cells[rcde.CellRow, rcde.CellColumn].Text = rcde.IndexData;
                                    }
                                }
                            }
                            catch
                            {
                                //MessageBox.Show(sheet.ToString() + "页," + row.ToString() + "行,记录指标配置存在错误,请配置指标人员仔细查检后,修正错误配置!");
                            }
                        }
                    }
                }

10 个回复

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

设置 Cell.Value 效率会高于 Text。
请问数据量是多少?如果数据量过多建议使用分页或按需加载的方式。
回复 使用道具 举报
wanghaibo
论坛元老   /  发表于:2014-9-24 10:40:00
板凳
回复 2楼iceman的帖子

数据量很大,这只是一行的数据

QQ图片20140924103745.jpg

496.35 KB, 下载次数: 525

回复 使用道具 举报
wanghaibo
论坛元老   /  发表于:2014-9-24 10:42:00
地板
回复 2楼iceman的帖子

如何分页或按需加载???
回复 使用道具 举报
wanghaibo
论坛元老   /  发表于:2014-9-24 10:50:00
5#

效率问题

回复 2楼iceman的帖子

效率问题

无标题.jpg

124.63 KB, 下载次数: 503

回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-9-24 12:05:00
6#
回复 5楼wanghaibo的帖子

按需加载请参考:
http://www.gcpowertools.com.cn/L ... emand/Overview.aspx

分页请参考:
http://www.gcpowertools.com.cn/L ... aging/Overview.aspx

看到了 3# 中的截图,数据量确实很大,请问有多少列?
在Web项目中性能问题一直是一个瓶颈,本身受到网络速度和数据库交互速度的影响。同时 Spread 在接收数据后需要去绘制文本和样式,本身也会消耗一定的时间。
回复 使用道具 举报
wanghaibo
论坛元老   /  发表于:2014-9-29 10:28:00
7#
回复 6楼iceman的帖子

100列
回复 使用道具 举报
wanghaibo
论坛元老   /  发表于:2014-9-29 10:29:00
8#
回复 6楼iceman的帖子

给每行的每个单元格赋值
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2014-9-29 15:37:00
9#
wanghaibo

我想先确认一下你这个画面出来的数据是需要用户编辑的吗,如果这么大的数据量加上前端客户编辑操作,性能会明显下降,而且没有太多可以改进的地方。

如果该数据不需要客户端编辑,可以尝试设置以下属性来禁用ViewState以提升客户端显示速度:
  1.     protected void Page_Load(object sender, EventArgs e)
  2.     {
  3.         if (!IsPostBack)
  4.         {
  5.             FpSpread1.EnableViewState = false;
  6.             FpSpread1.ViewStateMode = System.Web.UI.ViewStateMode.Disabled;
  7.             FpSpread1.SaveViewStateToSession = false;
  8.             FpSpread1.ActiveSheetView.OperationMode = FarPoint.Web.Spread.OperationMode.ReadOnly;
  9.         }            
  10.     }
复制代码
回复 使用道具 举报
wanghaibo
论坛元老   /  发表于:2014-9-29 15:58:00
10#
回复 9楼dof的帖子

不好意思,有点误会,我现在改的是WINFORM,谁把组给移动错了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部