在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
本教程提供了有關如何從中導出數據的全面指南DataGridView 控制項在 Windows Forms 應用程式中使用將資料匯出到 Excel 檔案IronXLC# 程式庫。 我們的重點將放在為希望將 Microsoft Excel 功能整合到其 C# 專案中的初學者創造一個無縫體驗上。
在 Visual Studio 中建立 C# Windows Forms 專案。
使用 NuGet 套件管理器安裝 Excel 函式庫。
在 Windows Form UI 中創建一個 DataGridView 和一個按鈕。
將資料來源附加到DataGridView。
IronXL是一個強大的函式庫,可以簡化在 .NET Framework 應用程式中處理 Excel 文件的過程。 它允許您匯出大型 Excel 檔案、處理複雜的資料來源,並在不需要 Microsoft Excel 物件庫的情況下,為 .NET Excel 檔案操作提供廣泛支援。 讓我們設置專案。
打開 Visual Studio 並創建一個新的 Windows Forms 應用程序。 這將是我們專案的基礎,在其中我們將實現將 DataGridView 數據導出到 Excel 文件的功能。
IronXL可以輕鬆添加到您的專案中。 在 Visual Studio 中,導航至「管理 NuGet 套件」選項,搜尋 IronXL,然後安裝它。 此操作將處理將 DataGridView 匯出到 Excel 所需的所有依賴項,使用 C#。
將 DataGridView 控制項添加到您的表單中。 此控制項將保存我們打算匯出的資料。 此外,添加一個按鈕來觸發匯出過程。 您可以標記為「匯出到 Excel」或類似的名稱。
在本節中,我們將教您如何使用 IronXL 將 Windows Forms 應用程式中的 DataGridView 資料匯出到 Excel 文件的具體編程功能。
首先,您需要在您的表單中添加一個 DataGridView 控件。 此控制項是顯示您的資料並在匯出之前顯示的主要組件。 您可以輕鬆地通過將 Visual Studio 工具箱中的 DataGridView 拖到表單上來添加它。 我們也可以新增一個按鈕以將 DataGridView 資料匯出至 Excel 文件。
接下來的步驟是將數據載入 DataGridView。 這些數據可以來自各種來源,例如 DataTable 或 DataSet。 如果您剛開始,您可能會想要以程式化方式創建一個新的 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 傳輸數據的地方。
在工作簿中的WorkSheet就像是 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# 將 DataGridView 數據導出到 Excel 文件中並且IronXL. 這項功能對於需要數據分析、報告或僅僅在不同格式之間傳輸數據的應用程式至關重要。 請記住,嘗試使用 DataGridView 控制項和 IronXL 程式庫的不同功能可以實現更多自訂和先進的實作。
IronXL 提供一個免費試用您可以用來探索其功能。 授權方案起價為$749,對於尋求可靠且高效的 Excel 檔案操作解決方案的專業人士和組織來說,是一項值得投資的選擇,用於 .NET 應用程式。
您的旅程不止於此。 繼續探索IronXL的更多功能以及增強Windows Forms應用程式的其他方法。 編碼快樂!