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中的所有数据保存在组合框中
实际结果=组合框中没有数据
谢谢您的帮助
答案 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" });