【问题标题】:C# , Visual Studio , Opening excel & then putting data into combo boxC# , Visual Studio , 打开 excel 然后将数据放入组合框
【发布时间】:2018-11-12 03:30:02
【问题描述】:

在过去的几个小时里,我在尝试从 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);

         }
        }
    }

任何建议将不胜感激。

【问题讨论】:

  • 您需要做一些工作才能使这段代码更加健壮。在完成 Excel 之前,您必须致电 excelApp.Quit()。您还需要在 每个 COM 实例 上调用 System.Runtime.InteropServices.Marshal.ReleaseComObject(instance),然后才能超出范围。在上面的代码中,还包括excelApp.Workbooks.Open(...) 中的excelApp.Workbooks 引用 - 您需要在调用 open 之前获取对 excelApp.Workbooks 的引用,然后在完成之前释放引用。您必须对每一个引用都非常小心。
  • 谢谢 Enigmativity ,我会记住这一点的。

标签: c# excel


【解决方案1】:

您应该考虑为此使用 3rd 方库,这将使您的生活比使用互操作更轻松。

Excel Data Reader

这将让您获取所有工作表名称并将数据读入 DataTable,然后您可以访问该数据表,但是您想从中获取所需的任何数据。 GitHub 自述页面包含一些简单的示例,可以为您解决问题。

【讨论】:

  • 感谢您的回复 Dmitry ,非常感谢。
【解决方案2】:

如果要处理 xlsx Excel 格式,我会推荐EPPLUS

从 nuget 包管理器安装 epplus 库:

然后using OfficeOpenXml;

获取工作表名称列表:

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

【讨论】:

  • 感谢阿巴斯,这是完美的工作。真的很感激!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-16
  • 2017-09-04
  • 1970-01-01
  • 2013-07-21
  • 1970-01-01
  • 2018-05-01
  • 1970-01-01
相关资源
最近更新 更多