帮我用C#在form窗体.NET4.5 写一个方法,用于选择excel文件,上传excel文件,并将excel传入datatable,显示在datagripview中,不要using Microsoft.Office.Interop.Excel;引用
时间: 2024-10-15 10:13:12 浏览: 34
在.NET 4.5中,你可以使用System.IO.Packaging和EPPlus库来读取Excel文件并将其内容转换为DataTable。EPPlus是一个轻量级的、基于.NET的Excel库,非常适合这样的需求。以下是一个简单的示例,展示如何创建一个方法来完成这个任务:
首先,你需要安装EPPlus库,可以在这里下载:https://epplus.codeplex.com/
```csharp
using System;
using System.Data;
using System.Windows.Forms;
using OfficeOpenXml;
public partial class YourForm : Form
{
public YourForm()
{
InitializeComponent();
}
private void SelectExcelFileButton_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog
{
Filter = "Excel Files (*.xlsx)|*.xlsx|All files (*.*)|*.*"
};
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName;
LoadDataFromExcel(filePath);
}
}
private DataTable LoadDataFromExcel(string filePath)
{
try
{
using (var package = new ExcelPackage(new FileInfo(filePath)))
{
var worksheet = package.Workbook.Worksheets[0]; // 假设你的第一个工作表
DataTable dataTable = new DataTable();
foreach (var column in worksheet.Cells.HeaderRow)
{
dataTable.Columns.Add(column.Text);
}
int rowNum = 2; // 跳过标题行
foreach (var row in worksheet.Rows)
{
DataRow dataRow = dataTable.NewRow();
for (int i = 0; i < row.Cells.Count; i++)
{
dataRow[i] = row.Cells[i].Value.ToString(); // 这里假设单元格都是字符串类型,可能需要根据实际数据类型调整
}
dataTable.Rows.Add(dataRow);
}
dataGridView.DataSource = dataTable;
}
}
catch (Exception ex)
{
MessageBox.Show("Error loading file: " + ex.Message);
}
}
}
```
在这个例子中,当用户点击"选择Excel文件"按钮时,会打开一个文件对话框让用户选择文件。然后,`LoadDataFromExcel`方法读取选定的文件,创建一个新的DataTable并将数据填充到其中,最后将数据绑定到DataGridView控件中。
阅读全文