file-type

C#实现DataGridView读取EXCEL数据的两种方法

4星 · 超过85%的资源 | 下载需积分: 9 | 469KB | 更新于2025-06-27 | 113 浏览量 | 114 下载量 举报 1 收藏
download 立即下载
在处理C#程序中与EXCEL文件交互的场景中,将EXCEL文件数据读取到DataGridView控件是一个常见的需求。DataGridView是.NET框架中的一个强大控件,用于以表格形式展示数据。本文将介绍两种不同的C#方法,用以实现从EXCEL文件中读取数据并将数据填充到DataGridView中。 ### 方法一:使用Microsoft.Office.Interop.Excel 这种方法需要在项目中引入Microsoft.Office.Interop.Excel库,该库可以通过添加COM引用到项目中获得。使用此方法可以较为直观地操作Excel应用程序,进行读取数据的动作。 **步骤一:添加引用** 首先,通过项目的“添加引用”对话框,添加`Microsoft.Office.Interop.Excel`的引用。 **步骤二:编写代码** 以下是一段示例代码,展示了如何使用`Microsoft.Office.Interop.Excel`将EXCEL文件中的数据读取到DataGridView中。 ```csharp using System; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; namespace ExcelToDt { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void btnReadFromExcel_Click(object sender, EventArgs e) { // 创建Excel应用实例 Excel.Application excelApp = new Excel.Application(); if (excelApp == null) { MessageBox.Show("Excel未安装!"); return; } // 打开Excel文件 Excel.Workbook workbook = excelApp.Workbooks.Open(@"C:\path\to\your\excel.xlsx"); Excel._Worksheet worksheet = workbook.Sheets[1]; Excel.Range range = worksheet.UsedRange; // 获取DataGridView的行数 int rows = dataGridView1.Rows.Count; // 清除DataGridView的现有数据 for (int i = rows - 1; i >= 0; i--) { dataGridView1.Rows.RemoveAt(i); } // 遍历Excel工作表的数据,填充到DataGridView for (int i = 1; i <= range.Rows.Count; i++) { dataGridView1.Rows.Add(); for (int j = 1; j <= range.Columns.Count; j++) { dataGridView1.Rows[i - 1].Cells[j - 1].Value = range.Cells[i, j].Value2; } } // 关闭工作簿和应用程序,释放资源 workbook.Close(false); excelApp.Quit(); // 清理COM对象 System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook); System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp); worksheet = null; workbook = null; excelApp = null; } } } ``` ### 方法二:使用EPPlus库 EPPlus是一个开源的.NET库,可以用来读写Excel文件,特别是基于OpenXML的文件。EPPlus相比使用`Microsoft.Office.Interop.Excel`的方法有不依赖Office安装的优势,且操作更为简洁。 **步骤一:安装EPPlus** 在项目中安装EPPlus库,可以通过NuGet包管理器安装。 ``` Install-Package EPPlus ``` **步骤二:编写代码** 以下示例代码展示了如何使用EPPlus库将Excel文件中的数据读取到DataGridView中。 ```csharp using System; using System.IO; using System.Windows.Forms; using OfficeOpenXml; namespace ExcelToDt { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void btnReadFromExcelWithEPPlus_Click(object sender, EventArgs e) { FileInfo existingFile = new FileInfo(@"C:\path\to\your\excel.xlsx"); FileInfo newFile = new FileInfo(@"C:\path\to\your\excel_copy.xlsx"); // 加载Excel文件 using (ExcelPackage pck = new ExcelPackage(existingFile)) { // 获取第一个工作表 ExcelWorksheet worksheet = pck.Workbook.Worksheets[0]; // 获取工作表中的已使用范围 ExcelRange range = worksheet.Cells[worksheet.Dimension.Address]; // 获取DataGridView的行数 int rows = dataGridView1.Rows.Count; // 清除DataGridView的现有数据 for (int i = rows - 1; i >= 0; i--) { dataGridView1.Rows.RemoveAt(i); } // 遍历工作表的范围,填充到DataGridView foreach (var row in range.Rows) { dataGridView1.Rows.Add(); foreach (var cell in row) { dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[cell.Start.Row - 1].Value = cell.Text; } } } } } } ``` ### 总结 通过上述两种方法,我们可以将Excel文件中的数据有效地读取并展示在DataGridView中。使用`Microsoft.Office.Interop.Excel`是一种与Excel交互更为灵活的方法,但需要计算机上安装有Office。而使用EPPlus则不需要依赖Office,更适合开发服务器端应用程序或自动化任务。在具体选择哪一种方法时,需要根据实际项目需求和环境进行判断。

相关推荐