前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >WeihanLi.Npoi 多 sheet 导出

WeihanLi.Npoi 多 sheet 导出

作者头像
JusterZhu
发布2025-01-23 20:51:30
发布2025-01-23 20:51:30
3300
代码可运行
举报
文章被收录于专栏:JusterZhuJusterZhu
运行总次数:0
代码可运行

WeihanLi.Npoi 多 sheet 导出

Intro

最近有位朋友在 Github 上提 issue 问,不同的集合类型怎么导出到同一个 excel 不同的 sheet 中,于是就想写篇文章分享一下,希望对需要的朋友有所帮助

Sample

废话不多说直接上代码吧,首先要导出到不同的 sheet 中需要自己准备一个 workbook 对象,再通过 ImportData 来导入数据

代码语言:javascript
代码运行次数:0
复制
var collection1 = new[]
{
    new TestEntity1() { Id = 1, Title = "test1" },
    new TestEntity1() { Id = 2, Title = "test2" }
};
var collection2 = new[]
{
    new TestEntity2() { Id = 1, Title = "test1", Description = "description"},
    new TestEntity2() { Id = 2, Title = "test2" }
};
// 准备一个 workbook
var workbook = ExcelHelper.PrepareWorkbook(ExcelFormat.Xlsx);
// 导入 collection1 到第一个 sheet
workbook.ImportData(collection1);
// 导入 collection2 到第二个 sheet
workbook.ImportData(collection2, 1);
// 导出 workbook 到本地文件
workbook.WriteToFile("multi-sheets.xlsx");

最后通过 WriteToFile 去写入到文件或者自己将 workbook 导出到一个 stream 中。

如果需要自定义一些配置还是和之前是一样的,可以使用 attribute 的方式也可以使用 fluent API 的方式,如下:

代码语言:javascript
代码运行次数:0
复制
[Sheet(SheetName = "TestSheet", SheetIndex = 0)]
file sealed class TestEntity1
{
    [Column("ID", Index = 0)]
    public int Id { get; set; }
    public string Title { get; set; } = string.Empty;
}

file sealed class TestEntity2
{
    public int Id { get; set; }
    public string Title { get; set; } = string.Empty;
    public string Description { get; set; }
}

Fluent API 配置如下:

代码语言:javascript
代码运行次数:0
复制
var settings = FluentSettings.For<TestEntity2>();
settings.HasSheetSetting(sheet => sheet.SheetName = "TestEntity2", 1);
settings.Property(x => x.Id)
    .HasColumnIndex(0)
    .HasColumnOutputFormatter(v => v.ToString("#0000"))
    ;
settings.Property(x => x.Title)
    .HasColumnIndex(1)
    ;
settings.Property(x => x.Description)
    .HasColumnIndex(2)
    ;

导出结果如下:

sheet0

sheet1

References

  • https://github.com/WeihanLi/SamplesInPractice/blob/main/NPOISample/MultiSheetsSample.cs
  • https://github.com/WeihanLi/WeihanLi.Npoi/issues/157
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JusterZhu 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • WeihanLi.Npoi 多 sheet 导出
    • Intro
    • Sample
    • References
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档