第一步,在Visual Studio的環境中,打開這個項目自帶的powershell。(中間正下方)
它的名字可能叫Package Manager Console。*(當然你自己開Powershell切換到該項目目錄也是一樣,只不過直接用IDE的工具更方便)
在裏面輸入命令:
Install-Package EPPlus
等待完成。
然後新建一個類:
using System;
using System.Data;
using System.Windows.Forms;
using OfficeOpenXml;
using OfficeOpenXml.Style;
using System.IO;
public class ExcelExporter
{
public static void ExportDataGridViewToExcel(DataGridView dataGridView)
{
try
{
using (var package = new ExcelPackage())
{
var worksheet = package.Workbook.Worksheets.Add("ExportedFromDataGridView");
// 添加列標題
for (int i = 0; i < dataGridView.Columns.Count; i++)
{
worksheet.Cells[1, i + 1].Value = dataGridView.Columns[i].HeaderText;
}
// 添加行數據
for (int i = 0; i < dataGridView.Rows.Count; i++)
{
for (int j = 0; j < dataGridView.Columns.Count; j++)
{
worksheet.Cells[i + 2, j + 1].Value = dataGridView.Rows[i].Cells[j].Value?.ToString();
}
}
// 设置列寬自適應
worksheet.Cells.AutoFitColumns();
// 保存EXCEL文件
var saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Excel files (*.xlsx)|*.xlsx";
saveFileDialog.FilterIndex = 2;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.Title = "Save Excel File";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
File.WriteAllBytes(saveFileDialog.FileName, package.GetAsByteArray());
MessageBox.Show("Export Successful");
}
}
}
catch (Exception ex)
{
MessageBox.Show($"An error occurred: {ex.Message}");
}
}
}
注意using的命名空間可能冗餘,你可酌情刪除。
這個類的使用方式:
private void btn_ExportToExcel_Click(object sender, EventArgs e)
{
ExcelExporter.ExportDataGridViewToExcel(dataGridView1);
}
對,這是個winform項目的演示,你需要創建winform並創建一個按鈕來執行這個方法。
導出excel的方法其實office的dll引用也能做出來,但是可能需要你有安裝office,或者引用的時候出現別的什麽缺失或版本不一致的問題。
EPPlus的方法,可以讓你直接最快導出Excel。
這個方法在2024/07/19目前仍然是生效的。