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

在处理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,更适合开发服务器端应用程序或自动化任务。在具体选择哪一种方法时,需要根据实际项目需求和环境进行判断。
相关推荐







kkndxxx
- 粉丝: 1
最新资源
- VC++图像处理源码解析与实践
- 深入解析ISO8211标准库与C++源码实现
- 深入分析IBatis源码与XSD结构
- 基于Struts 1.x的业务逻辑分离登录示例教程
- VC++实现Windows API下图片读写与编辑技巧
- Excel VBA股票查看工具:智慧1.0使用教程
- 深入解析Intel 80x86保护模式及其应用
- J2EE架构师实践手册:技术精要详解
- SQL中文API帮助文档的便捷使用指南
- 提升计算机网络学习与实践能力的自学系统
- 精选SQL面试题集:数据库面试必备
- T8000控制器在LCD显示中的应用与HX8238驱动芯片
- 《Effective C++》及《More Effective C++》随书CD内容介绍
- JSP实现多功能聊天室代码详解
- C#2005图书馆管理系统完整版:实用教程与源码
- SourceStyler_v1.3汉化补丁及keygen工具发布
- C++类库与库函数使用大全:学习与参考资料
- 工作流资料分享:深入理解与实践
- DELPHI源码实现硬件操作及IO读写
- JSP+SQL2000构建在线考试系统指南
- 2410触摸屏驱动完整程序:直接编译与测试指南
- Delphi7 DBGridEh控件免费分享
- JavaScript日历插件:时间验证与格式设置指南
- 图的数据结构操作详解