1. 程式人生 > 其它 >ExcelDataReader讀取excel-C#

ExcelDataReader讀取excel-C#

1、獲取包

使用nuget搜尋ExcelDATaReader和ExcelDataReader.DataSet
都需要進行安裝操作
使用名稱空間
using System.IO;
using ExcelDataReader;

2、使用

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using ExcelDataReader;
using System.Reflection;

namespace ReadExcel
{
    /// <summary>
    ///     C#讀取Excel檔案(.xls .xlsx)
    ///     LDH @ 2021-7-28
    ///     Nuget: ExcelDataReader ExcelDataReader.DataSet
    /// </summary>
    public partial class Form1 : Form
    {
        private DataTableCollection tableCollection;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog openFileDialog = new OpenFileDialog() { Filter = "Excel 97-2003 Workbook|*.xls|Excel Workbook|.xls"})
            {
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    txtFileName.Text = openFileDialog.FileName;
                    using (var stream = File.Open(openFileDialog.FileName,FileMode.Open, FileAccess.Read))
                    {
                        using (IExcelDataReader reader = ExcelReaderFactory.CreateReader(stream))
                        {

                            DataSet result = reader.AsDataSet(new ExcelDataSetConfiguration()
                            {
                                ConfigureDataTable = (_) => new ExcelDataTableConfiguration() { UseHeaderRow = true }
                            });
                            DataTable dt = result.Tables[0];
							// 關鍵就在這裡去獲取到excel中的單個數據
                            Value.Text = dt.Rows[1][2].ToString();
                            tableCollection = result.Tables;
                            cboSheet.Items.Clear();
                            foreach (DataTable table in tableCollection)
                            {
                                cboSheet.Items.Add(table.TableName);

                            }
                            
                        }
                    }
                }
            }
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            DataTable dt = tableCollection[cboSheet.SelectedItem.ToString()];
            
            dataGridView1.DataSource = dt;
        }
    }
}