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

时间:2016-04-13 01:06:53

标签: c# excel

我在最近几个小时试图从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);

         }
        }
    }

非常感谢任何建议。

2 个答案:

答案 0 :(得分:1)

你应该考虑使用第三方库,这将比使用互操作更容易。

Excel Data Reader

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

答案 1 :(得分:0)

如果要处理xlsx Excel格式,我建议EPPLUS

从nuget包管理器安装epplus库: enter image description here

enter image description here

然后using OfficeOpenXml;

获取工作表名称列表:

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