65 Star 337 Fork 86

magicodes / Magicodes.IE

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
5.动态导出.md 2.32 KB
一键复制 编辑 原始数据 按行查看 历史
HueiFeng 提交于 2020-09-22 22:35 . 添加动态导出

动态导出表头

通过如下代码片段我们可以实现对Excel表头的导出,我们可以以数组的形式进行传递生成我们的动态表头,同时以exporter.ExportHeaderAsByteArray的调用并将我们byte[]类型的result导出到指定的filepath(路径)中。

public async Task ExportHeaderAsByteArrayWithItems_Test()
{
    IExcelExporter exporter = new ExcelExporter();
    var arr = new[] { "Name1", "Name2", "Name3", "Name4", "Name5", "Name6" };
    var sheetName = "Test";
    var result = await exporter.ExportHeaderAsByteArray(arr, sheetName);
    
    result.ToExcelExportFileInfo(filePath);
}

DataTable动态导出

动态类型导出我们可以通过DataTable方式进行导出,在该导出中exportDatas是一个List,不过在如下代码片段中我们已经将其转换为DataTable类型并进行导出,maxRowNumberOnASheet为每一个sheet容纳的行数。

public async Task LargeDataDynamicExport_Test()
{
    IExcelExporter exporter = new ExcelExporter();
   
    var dt = new DataTable();
    //创建带列名和类型名的列
    dt.Columns.Add("Text", Type.GetType("System.String"));
    dt.Columns.Add("Name", Type.GetType("System.String"));
    dt.Columns.Add("Number", Type.GetType("System.Decimal"));
    dt = EntityToDataTable(dt, exportDatas);

    var result = await exporter.Export(filePath, dt, maxRowNumberOnASheet: 100000);
}

ExpandoObject导出

ExpandoObject它是一个动态对象,他是动态语言(DLR)的一部分,通过ExpandoObject我们可以在运行时添加和删除其实例的成员,当然还可以设置和获取这些值。在IE中我们是支持ExpandoObject对象的,所以在此处我们可以通过ExpandoObject来实现我们动态的导出行为。

public async Task ExportAsByteArraySupportDynamicType_Test()
{
    IExporter exporter = new ExcelExporter();
    
    var source = GenFu.GenFu.ListOf<ExportTestDataWithAttrs>();
    string fields = "text,number,name";
    var shapedData = source.ShapeData(fields) as ICollection<ExpandoObject>;

    var result = await exporter.ExportAsByteArray<ExpandoObject>(shapedData);
    File.WriteAllBytes(filePath, result);
}

另外对于ExpandoObject导出过程中对于表头等信息,可以使用筛选器进行实现,详细请参考筛选器使用的教程文章。

C#
1
https://gitee.com/magicodes/Magicodes.IE.git
git@gitee.com:magicodes/Magicodes.IE.git
magicodes
Magicodes.IE
Magicodes.IE
master

搜索帮助