使用pivot C#将DGV或DataTable导出到Excel文件是将数据从DataGridView(DGV)或DataTable对象导出到Excel文件,并且使用了pivot(透视)功能进行数据处理和转换。
概念:
分类:
优势:
应用场景:
推荐的腾讯云相关产品和产品介绍链接地址:
下面是使用C#实现将DGV或DataTable导出到Excel文件并使用pivot功能的代码示例:
using System;
using System.Data;
using System.IO;
using OfficeOpenXml;
using OfficeOpenXml.Table;
public static class ExcelExporter
{
public static void ExportToExcel(DataGridView dgv, string filePath)
{
DataTable dt = GetDataTableFromDGV(dgv);
ExportToExcel(dt, filePath);
}
public static void ExportToExcel(DataTable dt, string filePath)
{
using (ExcelPackage package = new ExcelPackage())
{
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1");
// 将DataTable数据写入ExcelWorksheet
for (int i = 0; i < dt.Columns.Count; i++)
{
worksheet.Cells[1, i + 1].Value = dt.Columns[i].ColumnName;
}
for (int row = 0; row < dt.Rows.Count; row++)
{
for (int col = 0; col < dt.Columns.Count; col++)
{
worksheet.Cells[row + 2, col + 1].Value = dt.Rows[row][col];
}
}
// 创建透视表
ExcelRangeBase dataRange = worksheet.Cells[worksheet.Dimension.Address];
ExcelTable table = worksheet.Tables.Add(dataRange, "PivotTable");
table.TableStyle = TableStyles.Medium2;
// 设置透视表字段
ExcelPivotTable pivotTable = worksheet.PivotTables.Add(worksheet.Cells["E1"], table, "PivotTable");
pivotTable.RowFields.Add(pivotTable.Fields["Column1"]);
pivotTable.ColumnFields.Add(pivotTable.Fields["Column2"]);
pivotTable.DataFields.Add(pivotTable.Fields["Column3"]);
// 保存Excel文件
FileInfo file = new FileInfo(filePath);
package.SaveAs(file);
}
}
private static DataTable GetDataTableFromDGV(DataGridView dgv)
{
DataTable dt = new DataTable();
// 创建列
for (int i = 0; i < dgv.Columns.Count; i++)
{
dt.Columns.Add(dgv.Columns[i].HeaderText);
}
// 添加行数据
foreach (DataGridViewRow row in dgv.Rows)
{
DataRow dr = dt.NewRow();
for (int i = 0; i < dgv.Columns.Count; i++)
{
dr[i] = row.Cells[i].Value;
}
dt.Rows.Add(dr);
}
return dt;
}
}
使用方法示例:
// 导出DataGridView到Excel文件
DataGridView dgv = new DataGridView();
// 添加数据到DataGridView
// ...
string filePath = "path/to/file.xlsx";
ExcelExporter.ExportToExcel(dgv, filePath);
以上代码使用了EPPlus
库来实现Excel文件的导入导出和透视功能。请确保已安装并引用了此库。
领取专属 10元无门槛券
手把手带您无忧上云