调试应用程序时如何将数据从Excel加载到组合框

时间:2019-05-02 02:48:46

标签: c# excel

im试图将数据从excel导入组合框

我希望在调试应用程序时加载它,因此在打开应用程序时,组合框已经填充了来自excel的数据

public void fill_comboBox()
        {
            xlApp = new Excel.Application();
            try
            {
                xlWb = xlApp.Workbooks.Open("C:\\Users\\Desktop\\Acct.No.xlsx"); //example path
                xlWS = xlWb.Sheets[1];
                xlRange = xlWS.UsedRange;

                row = xlRange.Rows.Count;
                col = xlRange.Columns.Count;


                fulldata = new string[row][];


                for (int i = 0; i < fulldata.Length; i++)
                {
                    fulldata[i] = new string[col];

                }

                for (int i = 0; i < row; i++)
                {
                    for (int j = 0; j < col; j++)
                    {
                        fulldata[i][j] = xlWS.Cells[i + 1, j + 1].value2.ToString();
                        //MessageBox.Show(fulldata[i][j]);
                    }
                }

                closeExcel(xlApp);


                for (int i = 0; i < col; i++)
                {
                    comboBox1.Items.Add(fulldata[i][0]);
                }

            }
            catch (Exception e)
            {

            }
        }

然后我将函数放入


       public Form1()
        {
            fill_comboBox();
            InitializeComponent();
        }

我不知道哪里出了错误,因为在调试应用程序后它不起作用

预期结果=我调试应用程序后无需按任何按钮即可将excel中的所有数据保存在组合框中

实际结果=组合框中没有数据

谢谢您的帮助

2 个答案:

答案 0 :(得分:0)

不要在InitializeComponent之前放置涉及控件的方法调用-InitializeComponent设置表单控件,通常需要先发生

我建议您改为在Form_Load事件处理程序中将对fill_Combobox的调用。显示表单设计器,单击表单背景的任何空白部分以选择表单,单击属性网格中的闪电以切换到表单的事件列表,双击“加载”旁边的空白单元格。编辑器将切换到新创建的称为Form_Load或类似方法的代码视图。而是将您的电话放在那里

答案 1 :(得分:0)

组件准备就绪(InitializeComponent)后使用UI控件对象

因此,您应该更改为以下内容:

   public Form1()
   {
       InitializeComponent();
       fill_comboBox(); // do after components initialized 
   }

顺便说一句,C#组合框可以指定DisplayField和ValueField,这很容易理解

通过以下方式设置字段:

   ComboBox.DisplayMember = "Text";
   ComboBox.ValueMember = "Value";
   ComboBox.Items.Add(new { Text = "text", value = "value" });