C#:Excel:ExcelDataReader
ExcelDataReader で XLS と XLSX の両方を読込む方法
ExcelDataReader で XLS と XLSX の両方を読込む方法
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; namespace Excel_DataReader { public partial class Form1 : Form { public Form1() { InitializeComponent(); } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { var path = @"D:\test\files"; var files = Directory.GetFiles(path); foreach (var file in files) { var ds = ReadExcelData(file); if (ds == null) { continue; } //## Sheet ############################# foreach (DataTable tbl in ds.Tables) { Console.WriteLine("TABLE {0}", tbl.TableName); //--- Row ----------- foreach (DataRow row in tbl.Rows) { //--- Col ----------- for (var i = 0; i < tbl.Columns.Count; i++) { Console.Write("{0} ", row[i]); } Console.WriteLine(""); } this.dgv.DataSource = tbl; this.Refresh(); } } } /// <summary> /// /// </summary> /// <param name="path"></param> /// <returns></returns> static DataSet ReadExcelData(string path) { DataSet ds = null; var ext = Path.GetExtension(path); try { using (var stream = File.Open(path, FileMode.Open, FileAccess.Read)) { using (var reader = ExcelReaderFactory.CreateReader(stream)) { ds = reader.AsDataSet(); } } } catch (Exception ex) { Console.Error.WriteLine(ex.Message); } return ds; } } }