我希望读取一个 Excel 文件并将其发布到一个带有名称的列表框(employeeBox)(该名称始终位于 Excel 工作表的第一列)。然后,在列表框中选择名称后,我希望删除该名称。我的第一个也是主要问题是它不会加载列表框中的名称。当我调试它时,它甚至看起来不像是在加载 Excel 来读取。我已将代码放入按钮中并且加载正常。有人可以帮忙吗?这是我的第一篇文章。因此,如果对如何提问有任何建议,请告诉我。 附:设置代码只是为了获取单元格的值。还不是名称。
private void Form3_Load(object sender, EventArgs e)
{
Excel.Application xlexcel = new Excel.Application();
xlexcel.Visible = true;
string fileName = "C:\\MyExcel.xlsx";
Excel.Workbook xlWorkBook = xlexcel.Workbooks.Open(fileName, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets[1];
Excel.Range usedRange = xlWorkSheet.UsedRange;
string data = "";
Excel.Range curRange;
List<string> itemsToAdd = new List<string>();
try
{
foreach (Excel.Range row in usedRange.Rows)
{
curRange = (Excel.Range)row.Cells[1, 1];
data = curRange.Cells.Value.ToString();
itemsToAdd.Add(data);
xlWorkBook.Close();
xlexcel.Quit();
}
employeeBox.DataSource = itemsToAdd;
}
catch(Exception)
{
Console.WriteLine();
}
}
private void employeeBox_SelectedIndexChanged(object sender, EventArgs e)
{
employeeBox.Click += employeeBox_Click;
}
private void employeeBox_Click(object sender, EventArgs e)
{
throw new NotImplementedException();
}
进行适当的更正后,它给了我一个运行时异常..这促使我使用 try catch..这消除了错误,但它仍然没有添加。它显示了消息框但没有添加到列表框。现在..我试验了一下,发现当你关闭excel时它会添加,但它只添加一件事。
最佳答案
这应该可以循环遍历每一行数据并从第 1 列获取值。
Range usedRange = xlWorkSheet.UsedRange;
string data = "";
Excel.Range curRange;
List<string> itemsToAdd = new List<string>();
foreach (Excel.Range row in usedRange.Rows)
{
curRange = (Excel.Range)row.Cells[1, 1];
if (curRange.Cells.Value2 != null)
{
data = curRange.Cells.Value2.ToString();
itemsToAdd.Add(data);
}
}
listBox1.DataSource = itemsToAdd;
xlWorkBook.Close(false, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
xlexcel.Quit();
更新忽略空白行 - 当usedRange返回时...如果数据不在连续行中,它可能包括空白行。
希望这有帮助!
关于c# - 读取 Excel 工作表,并在读取后添加到列表框。 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39794351/