C#,Visual Studio,打开excel&;然后将数据放入组合框

C#,Visual Studio,打开excel&;然后将数据放入组合框,c#,excel,C#,Excel,在过去的几个小时里,我在试图从excel工作簿中提取工作表名称并在组合框中显示以供选择时遇到了一个问题。我设法让它工作,但我有点担心它的粗糙和不是很有效 private void btnChoose2_Click(object sender, RoutedEventArgs e) { OpenFileDialog openfileDialog1 = new OpenFileDialog(); if (openfileDialog1.ShowDia

在过去的几个小时里,我在试图从excel工作簿中提取工作表名称并在组合框中显示以供选择时遇到了一个问题。我设法让它工作,但我有点担心它的粗糙和不是很有效

     private void btnChoose2_Click(object sender, RoutedEventArgs e)
    {
        OpenFileDialog openfileDialog1 = new OpenFileDialog();
        if (openfileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {

            openLabel.Text = openfileDialog1.SafeFileName;
            String filename = DialogResult.ToString();

            var excelApp = new Microsoft.Office.Interop.Excel.Application();
            excelApp.Visible = false;
            excelApp.Workbooks.Open(openfileDialog1.FileName);

            int rcountTag = excelApp.Sheets.Count - 1;

             for (int i = 1; i <= rcountTag + 1; i++)
            {
                Microsoft.Office.Interop.Excel.Sheets excelSheets = excelApp.Worksheets;
                Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)

           excelSheets.get_Item(i);
                comboBoxMapping.Items.Insert(i - 1, worksheet.Name);

         }
        }
    }
private void btnChoose2\u单击(对象发送者,路由目标)
{
OpenFileDialog openfileDialog1=新建OpenFileDialog();
if(openfileDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK)
{
openLabel.Text=openfileDialog1.SafeFileName;
字符串文件名=DialogResult.ToString();
var excelApp=new Microsoft.Office.Interop.Excel.Application();
excelApp.Visible=false;
excelApp.Workbooks.Open(openfileDialog1.FileName);
int rcountTag=excelApp.Sheets.Count-1;

对于(inti=1;i您应该考虑使用第三方库来实现这一点,这将使您的生活比处理互操作更容易

这将使您获得所有工作表名称并将数据读入数据表,然后您可以访问该数据表,但您需要从中获取任何数据。GitHub read Me页面有一些简单的示例,可以为您解决问题。

我建议您处理xlsx Excel格式

从nuget软件包管理器安装epplus库:

然后
使用OfficeOpenXml;

获取图纸名称列表:

ExcelPackage DocInv = new ExcelPackage(new FileInfo(ExcelDocument));
DocList = DocInv.Workbook.Worksheets.AsEnumerable().Select(x => x.Name).ToList();

要使此代码健壮,您还有一些工作要做。在使用Excel之前,必须调用
excelApp.Quit()
。您还需要调用
System.Runtime.InteropServices.Marshal.ReleaseComObject(实例)
在每个COM实例超出范围之前对其进行检查。在上述代码中,还包括
excelApp.Workbooks中的
excelApp.Workbooks
参考(…)
-在调用open之前,您需要获得一个对excelApp.Workbooks的引用,然后在完成之前发布该引用。您必须对每一个引用都非常小心。谢谢您的神秘性,我会记住这一点。谢谢您的回复,德米特里,非常感谢。谢谢阿巴斯,这工作非常完美。Rea我很感激!