还没开始读写Excel,程序启动特别的慢。我的代码:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using Microsoft.Office.Core;
namespace WindowsFormsApplication1 {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();        }        private Microsoft.Office.Interop.Excel.Application xlApp ;        private void Form1_Load(object sender, EventArgs e) {            xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
            if (xlApp == null) { MessageBox.Show("Can't open Excel!"); return; }
        }
    }
}窗口半天才出现,究竟是为什么????

解决方案 »

  1.   

    这是正常的,第一次启动Excel就是慢,第二次就快了。直接点Excel图标启动也要这么长的时间。
    我的方法是显示一个等待图片。
      

  2.   

    在程序启动的时候加载new Microsoft.Office.Interop.Excel.ApplicationClass(); 
      

  3.   

    下面是我以前项目操作Excel的代码,开始时将Visible设置为False试下.也可以用后期绑定测试,不过就没有智能提示了!   public class ExcelApplication
        {
            
            private static Application _excelApp;
            private static ExcelApplication _instance;
            protected ExcelApplication()
            {
            } 
            
            private Application CreateApplication()
            {
                try
                {
                    _excelApp = new ApplicationClass();
                    _excelApp.Visible = false;
                    return _excelApp;
                }
                catch
                {
                    return null;
                }
            }        public Application GetApplication()
            {
                try
                {
                    _excelApp = this.CreateApplication();
                    _excelApp.Visible = false;
                    return _excelApp;
                }
                catch
                {
                    this.KillwordProcess();
                    return this.CreateApplication();
                }
            }        public static ExcelApplication GetIntance()
            {
                if (_instance == null)
                {
                    lock (typeof(ExcelApplication))
                    {
                        if (_instance == null)
                        {
                            _instance = new ExcelApplication();
                        }
                    }
                }
                return _instance;
            }
            public void KillwordProcess()
            {
                try
                {
                    foreach (Process process in Process.GetProcessesByName("EXCEL"))
                    {
                        process.Kill();
                    }
                }
                catch
                {
                }
            }        public void Quit()
            {
                try
                {
                    _excelApp.Quit();
                }
                catch
                {
                }
            }
     
        }
      

  4.   

    private void button1_Click(object sender, EventArgs e)
    {
        object[,] aDat = new object[10000, 26];
        for (int i = 0; i < aDat.GetLength(0); i++)
        {
            for (int j = 0; j < aDat.GetLength(1); j++) aDat[i, j] = i + j;
        }
        System.Reflection.Missing oMss = System.Reflection.Missing.Value;
        Microsoft.Office.Interop.Excel.Application oApp = new Microsoft.Office.Interop.Excel.Application();
        Microsoft.Office.Interop.Excel.Workbook oBok = oApp.Workbooks.Add(oMss);
        Microsoft.Office.Interop.Excel.Worksheet oSht = (Microsoft.Office.Interop.Excel.Worksheet)oBok.Worksheets.Add(oMss, oMss, oMss, oMss);
        oSht.Name = "报表";
        oSht.get_Range(oSht.Cells[1, 1], oSht.Cells[aDat.GetLength(0), aDat.GetLength(1)]).Value2 = aDat;
        oApp.Visible = true;
    }处理器  : AMD Athlon(tm) 7750 2.70GHz 
    操作系统:  XPsp2
    测试结果: < 1s
      

  5.   

    你的机器打开Excel是不是每次也都慢?
      

  6.   


    机器打开Excel很正常,一点也不慢
      

  7.   

    你是不是还有别的代码异常了,看下输出最好的构造函数中调用new,否则有别的事件会触发使用的
      

  8.   


    代码很简单,就是我发的那个。就是用vs2008建个winform程序,然后引用excel组件,别的什么都没做。