我是靠谱客的博主 热情篮球,最近开发中收集的这篇文章主要介绍 Excel开发系列二 解决.net生成Excel文件速度问题的若干方案,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

许多csdn上的朋友在寻求如何提高生成Excel时写表格的速度,我在这有点见解,以供大家分享。

首先是SreenUpdateing 属性,这个属性是Application的属性,它指示是否在生成Excel时,你需要及时更新显示屏。当然,在生成时,最好不要这样,然而在生成后,你需要将这个属性设置为true,原因就不说了吧。

当然,在生成之前,你最好能将其可见这个属性设置为false,生成后才显示,那样也能稍微提高点效率。

另外,我还有个秘密武器,就是C#与Excel的交互时,每次都需要调用Excel的接口,所以,如果你是用2层循环来对每个格子赋值,那么你对每个格子赋值的时候,都需要调用Excel的接口,那是非常耗资源的,然而有另外一种办法来解决这个问题。即对一个范围进行赋值。

//此代码基于vs2005下的vsto2005平台下的部分代码。

        private void DataBind()
        {
            dbname = @"C:/Documents and Settings/xiangx/桌面/MTshapeUp.mdb";
            string Dbname = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=" + dbname;
            OleDbConnection con = new OleDbConnection(Dbname);
            OleDbCommand com = new OleDbCommand("select * from T_MT_INFO_RULE");
            try
            {
                con.Open();
                com.CommandType = CommandType.Text;
                com.Connection = con;
                OleDbDataAdapter da = new OleDbDataAdapter(com);
                ds = new DataSet("Test");


                da.Fill(ds);
            }
            catch
            {
           
            }
            finally
            {
                con.Close();
            }
          DataTable dt = ds.Tables[0];
           
            Excel.Worksheet ws = (Excel.Worksheet)Application.ActiveSheet;
            Excel.Range rng = ws.get_Range("A2","E3");

          string [,]datasource = Tabletoarrays(dt);

//使用二维数组对这个范围进行简单赋值。

          rng.Value2 = datasource;

          Application.DisplayAlerts = false;
         

          GC.Collect();
 

        }

        private  string[,] Tabletoarrays(DataTable dt)
        {
            int tablerows = dt.Rows.Count;
            int tablecols = dt.Columns.Count;
            string[,] Arrays = new string[tablerows, tablecols];
            for (int i = 0; i < tablerows; i++)
            {
                for (int j = 0; j < tablecols; j++)
                {
                    Arrays[i, j] = Convert.ToString(dt.Rows[i][j]);
                }
            }
            return Arrays;
        }

这个value指示的是简单邦定,还有对于Datasourse的复杂绑定,将在以后介绍。

最后

以上就是热情篮球为你收集整理的 Excel开发系列二 解决.net生成Excel文件速度问题的若干方案的全部内容,希望文章能够帮你解决 Excel开发系列二 解决.net生成Excel文件速度问题的若干方案所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部