可以使用以下代码实现:

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Windows.Forms;

namespace ExcelUploader
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnUpload_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Multiselect = true;
            openFileDialog.Filter = "Excel Files|*.xls;*.xlsx";
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                List<string> filePaths = openFileDialog.FileNames.ToList();
                foreach (string filePath in filePaths)
                {
                    ReadExcel(filePath);
                }
            }
        }

        private void ReadExcel(string filePath)
        {
            // 读取Excel文件
            DataTable dataTable = new DataTable();
            try
            {
                using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read))
                {
                    using (var reader = ExcelReaderFactory.CreateReader(stream))
                    {
                        var result = reader.AsDataSet(new ExcelDataSetConfiguration()
                        {
                            ConfigureDataTable = (tableReader) => new ExcelDataTableConfiguration()
                            {
                                UseHeaderRow = true
                            }
                        });

                        if (result.Tables.Count > 0)
                        {
                            dataTable = result.Tables[0];
                        }
                    }
                }
            }
            catch (IOException ex)
            {
                MessageBox.Show("文件正在使用中,请关闭文件后再上传。");
                return;
            }
            catch (Exception ex)
            {
                MessageBox.Show("读取Excel文件出错:" + ex.Message);
                return;
            }

            // 处理Excel数据
            foreach (DataRow row in dataTable.Rows)
            {
                // 处理每一行数据
                foreach (var item in row.ItemArray)
                {
                    // 处理每个单元格数据
                    Console.WriteLine(item);
                }
            }
        }
    }
}

这是一个简单的WinForms应用程序,其中包含一个'上传'按钮(btnUpload),点击该按钮可以选择多个Excel文件进行上传。上传后,会调用ReadExcel方法来读取每个Excel文件的数据。

需要注意的是,上述代码中使用了一个名为ExcelDataReader的第三方库,用于读取Excel文件。你可以通过NuGet包管理器来安装这个库。

需要添加以下引用:

using ExcelDataReader;
using System.IO;
using System.Linq;
using System.Windows.Forms;

希望对你有帮助!

C# WinForms 上传多个Excel报表并读取数据

原文地址: https://www.cveoy.top/t/topic/qr6O 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录