在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
本教程全面介绍了如何从数据网格视图控件在 Windows 窗体应用程序中使用铁XLC# 库。 我们的重点是为希望将 Microsoft Excel 功能集成到其 C# 项目中的初学者创造一种无缝体验。
在 Visual Studio 中创建一个 C# Windows Forms 项目。
使用 NuGet 软件包管理器安装 Excel 库。
在 Windows 表单用户界面中创建一个 DataGridView 和一个按钮。
将数据源附加到 DataGridView。
铁XLExcel 是一个强大的库,可简化在 .NET Framework 应用程序中处理 Excel 文档的过程。 它允许您导出大型 Excel 文件、处理复杂的数据源,并为 .NET Excel 文件操作提供广泛支持,而无需 Microsoft Excel 对象库。 让我们来建立我们的项目。
打开 Visual Studio 并创建一个新的 Windows 窗体应用程序。 这将是我们项目的基础,我们将在这里实现将 DataGridView 数据导出到 Excel 文件的功能。
IronXL 可以轻松添加到您的项目中。 在 Visual Studio 中,导航至 "管理 NuGet 软件包 "选项,搜索 IronXL 并安装。 该操作将处理在 C# 中将 DataGridView 导出到 Excel 所需的所有依赖关系。
在表单中添加 DataGridView 控件。 该控件将保存我们打算导出的数据。 此外,添加一个按钮来触发导出过程。 您可以将其标注为 "Export to Excel "或类似内容。
在本节中,我们将具体讲授如何编程实现使用 IronXL 将数据从 Windows 窗体应用程序中的 DataGridView 导出到 Excel 文档的功能。
首先,您需要在表单中添加 DataGridView 控件。 该控件是导出数据前显示数据的主要组件。 您可以从 Visual Studio 的工具箱中将 DataGridView 拖到表单上,从而轻松添加它。 我们还可以添加一个按钮,将 DataGridView 数据导出到 Excel 文件。
下一步是将数据加载到 DataGridView 中。 这些数据可能来自不同的来源,如数据表或数据集。 如果您刚开始使用,您可能需要以编程方式创建一个新的 DataSet 或 DataTable 并填充示例数据,以了解其工作原理。 或者,您也可以从外部来源导入数据。 这里的关键是将数据源绑定到 DataGridView,从而有效地将数据链接到网格。 一旦将数据绑定到 DataGridView,您就可以在表单的网格中看到这些数据。
private void BindDataToDataGridView()
{
// Create a new DataTable.
DataTable dataTable = new DataTable();
// Define columns for the DataTable.
dataTable.Columns.Add("Employee ID", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Department", typeof(string));
dataTable.Columns.Add("Joining Date", typeof(DateTime));
// Add sample data to the DataTable.
for (int i = 1; i <= 25; i++)
{
dataTable.Rows.Add(i, "Employee " + i, "Department " + (i % 5 + 1), DateTime.Now.AddDays(-i * 15));
}
// Bind the DataTable to the DataGridView.
dataGridView1.DataSource = dataTable;
}
private void BindDataToDataGridView()
{
// Create a new DataTable.
DataTable dataTable = new DataTable();
// Define columns for the DataTable.
dataTable.Columns.Add("Employee ID", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Department", typeof(string));
dataTable.Columns.Add("Joining Date", typeof(DateTime));
// Add sample data to the DataTable.
for (int i = 1; i <= 25; i++)
{
dataTable.Rows.Add(i, "Employee " + i, "Department " + (i % 5 + 1), DateTime.Now.AddDays(-i * 15));
}
// Bind the DataTable to the DataGridView.
dataGridView1.DataSource = dataTable;
}
Private Sub BindDataToDataGridView()
' Create a new DataTable.
Dim dataTable As New DataTable()
' Define columns for the DataTable.
dataTable.Columns.Add("Employee ID", GetType(Integer))
dataTable.Columns.Add("Name", GetType(String))
dataTable.Columns.Add("Department", GetType(String))
dataTable.Columns.Add("Joining Date", GetType(DateTime))
' Add sample data to the DataTable.
For i As Integer = 1 To 25
dataTable.Rows.Add(i, "Employee " & i, "Department " & (i Mod 5 + 1), DateTime.Now.AddDays(-i * 15))
Next i
' Bind the DataTable to the DataGridView.
dataGridView1.DataSource = dataTable
End Sub
我们与用户的主要交互点是 Windows 窗体中的一个按钮。 点击该按钮后,将启动导出流程。 以下是如何设置这种交互:
private void btnExport_Click(object sender, EventArgs e)
{
// Code to export data will go here
}
private void btnExport_Click(object sender, EventArgs e)
{
// Code to export data will go here
}
Private Sub btnExport_Click(ByVal sender As Object, ByVal e As EventArgs)
' Code to export data will go here
End Sub
要导出 DataGridView 数据,我们首先需要引用 IronXL 命名空间:
using IronXL;
using IronXL;
Imports IronXL
在事件处理程序中,第一步是使用 IronXL 初始化一个新的工作簿和工作表。 这是我们从 DataGridView 传输数据的地方。
工作簿中的工作表就像 Excel 文件中的一个单独页面或选项卡。
在这里,我们创建一个工作簿,然后添加一个工作表。 工作表的名称为 "ExportedData",但您也可以选择任何适合您应用程序上下文的名称。
WorkBook workbook = new WorkBook();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");
WorkBook workbook = new WorkBook();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");
Dim workbook As New WorkBook()
Dim worksheet As WorkSheet = workbook.CreateWorkSheet("ExportedData")
下一步是遍历 DataGridView 的行和列,并将每个单元格的数据复制到 Excel 工作表中的相应单元格。
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
// Convert row and column index to Excel cell address format
string cellAddress = ConvertToCellAddress(i, j);
worksheet [cellAddress].Value = dataGridView1.Rows [i].Cells [j].Value.ToString();
}
}
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
// Convert row and column index to Excel cell address format
string cellAddress = ConvertToCellAddress(i, j);
worksheet [cellAddress].Value = dataGridView1.Rows [i].Cells [j].Value.ToString();
}
}
For i As Integer = 0 To dataGridView1.Rows.Count - 1
For j As Integer = 0 To dataGridView1.Columns.Count - 1
' Convert row and column index to Excel cell address format
Dim cellAddress As String = ConvertToCellAddress(i, j)
worksheet (cellAddress).Value = dataGridView1.Rows (i).Cells (j).Value.ToString()
Next j
Next i
要将行和列索引转换为 Excel 单元格地址,可以使用类似这样的辅助方法:
private string ConvertToCellAddress(int row, int column)
{
// Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
// The following code converts a column index to this format.
string columnLabel = "";
while (column >= 0)
{
columnLabel = (char)('A' + column % 26) + columnLabel;
column = column / 26 - 1;
}
// Rows in Excel are labeled as 1, 2, 3, ..., n
// Adding 1 because Excel is 1-based and our loop is 0-based.
string rowLabel = (row + 1).ToString();
return columnLabel + rowLabel;
}
private string ConvertToCellAddress(int row, int column)
{
// Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
// The following code converts a column index to this format.
string columnLabel = "";
while (column >= 0)
{
columnLabel = (char)('A' + column % 26) + columnLabel;
column = column / 26 - 1;
}
// Rows in Excel are labeled as 1, 2, 3, ..., n
// Adding 1 because Excel is 1-based and our loop is 0-based.
string rowLabel = (row + 1).ToString();
return columnLabel + rowLabel;
}
Private Function ConvertToCellAddress(ByVal row As Integer, ByVal column As Integer) As String
' Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
' The following code converts a column index to this format.
Dim columnLabel As String = ""
Do While column >= 0
columnLabel = ChrW(AscW("A"c) + column Mod 26) & columnLabel
column = column \ 26 - 1
Loop
' Rows in Excel are labeled as 1, 2, 3, ..., n
' Adding 1 because Excel is 1-based and our loop is 0-based.
Dim rowLabel As String = (row + 1).ToString()
Return columnLabel & rowLabel
End Function
所有数据传输完成后,下一步就是将该工作簿保存为 Excel 文件。此步骤将在系统中指定路径下创建 Excel 文件。
workbook.SaveAs("DataGridViewExport.xlsx");
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
workbook.SaveAs("DataGridViewExport.xlsx");
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
workbook.SaveAs("DataGridViewExport.xlsx")
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information)
在任何数据导出过程中,处理异常对于确保应用程序的稳定性至关重要。 用 try-catch 块封装导出逻辑,确保在导出过程中出现任何问题(如文件访问权限、数据格式问题等。)并从容应对。
try
{
// Export logic
}
catch (Exception ex)
{
MessageBox.Show("An exception occurred: " + ex.Message);
}
try
{
// Export logic
}
catch (Exception ex)
{
MessageBox.Show("An exception occurred: " + ex.Message);
}
Try
' Export logic
Catch ex As Exception
MessageBox.Show("An exception occurred: " & ex.Message)
End Try
一旦我们运行程序,就会出现这个界面:
在这里,您可以看到数据显示在 DataGridView 中。 现在,点击 "导出 "按钮。 它将把数据从 DataGridView 导出到 Excel 文件。
在这里,您可以看到出现了一个消息框,数据被导出到 Excel 文件中。下面是输出的 Excel 文件:
通过本指南,您现在拥有了一个基本但功能强大的工具,可以使用 C# 和铁XL. 这一功能对于需要进行数据分析、报告或在不同格式之间传输数据的应用程序至关重要。 请记住,尝试使用 DataGridView 控件和 IronXL 库的不同功能可以实现更多定制化的高级实现。
IronXL 提供了一个免费试用您可以用它来探索其功能。 License 起价为 $749,对于在 .NET 应用程序中寻求可靠、高效的 Excel 文件操作解决方案的 Professional 和组织而言,这是一项值得投资的项目。
您的旅程不会就此结束。 继续探索 IronXL 的更多功能以及增强 Windows 窗体应用程序的其他方法。 快乐编程!