导出到excel的列是动态不固定的
zhujinhu21 opened this issue · 14 comments
zhujinhu21 commented
issue-label-bot commented
Issue-Label Bot is automatically applying the label feature_request
to this issue, with a confidence of 0.54. Please mark this comment with 👍 or 👎 to give our bot feedback!
Links: app homepage, dashboard and code for this bot.
WeihanLi commented
我觉得可以尝试使用 FluentAPI 来配置 OutputFormatter
,
var setting = ExcelHelper.SettingFor<TestEntity>();
setting.Property(_ => _.userField)
.HasOutputFormatter((entity, value) => $"{value[0].value},{value[2].value}")
.HasColumnTitle("姓名,工号")
.HasColumnIndex(2);
不知道我想的是不是符合你的需求,上面这样导出的结果是,“姓名,工号” 是列名,然后这一列的数据是 userField[0].value, userField[2].value
zhujinhu21 commented
请问这么做 姓名,工号是在一个单元格中还是在2个单元格中,在一个单元格中吧?
WeihanLi commented
对,是一个单元格
WeihanLi commented
写了一个简单的示例:
using System;
using System.Collections.Generic;
using System.IO;
using WeihanLi.Npoi;
namespace NpoiTest
{
public class Program
{
public static void Main(string[] args)
{
var settings = ExcelHelper.SettingFor<TestEntity>();
settings.Property(x => x.Name)
.HasColumnIndex(0);
settings.Property(x => x.UserFields)
.HasOutputFormatter((entity, value) => $"{value[0].Value},{value[2].Value}")
.HasColumnTitle("姓名,工号")
.HasColumnIndex(1);
var data = new List<TestEntity>()
{
new TestEntity()
{
Name = "xiaoming",
TotalScore = 100,
UserFields = new UserField[]
{
new UserField()
{
Name = "姓名",
Value = "xaioming",
},
new UserField()
{
Name = "部门",
Value = "1212"
},
new UserField()
{
Name = "工号",
Value = "121213131"
},
}
}
};
data.ToExcelFile($@"{Directory.GetCurrentDirectory()}\output.xls");
Console.WriteLine("complete.");
}
private class TestEntity
{
public string Name { get; set; }
public UserField[] UserFields { get; set; }
public int TotalScore { get; set; }
}
private class UserField
{
public string Fid { get; set; }
public string Name { get; set; }
public string Value { get; set; }
}
}
}
zhujinhu21 commented
我问问产品那边写在一列中可以吗
WeihanLi commented
如果想要导出多个列的话,可以使用 1.6.0 版本,1.6.0 版本支持隐藏属性,可以自己扩展不存在的属性
使用示例:
using System;
using System.Collections.Generic;
using System.IO;
using WeihanLi.Npoi;
namespace NpoiTest
{
public class Program
{
public static void Main(string[] args)
{
var settings = ExcelHelper.SettingFor<TestEntity>();
settings.Property(x => x.Name)
.HasColumnIndex(0);
// settings.Property(x => x.UserFields)
// .HasOutputFormatter((entity, value) => $"{value[0].Value},{value[2].Value}")
// .HasColumnTitle("姓名,工号")
// .HasColumnIndex(1);
settings.Property(x=>x.UserFields).Ignored();
settings.Property("工号")
.HasOutputFormatter((entity,val)=> $"{entity.UserFields[2].Value}")
;
settings.Property("部门")
.HasOutputFormatter((entity,val)=> $"{entity.UserFields[1].Value}")
;
var data = new List<TestEntity>()
{
new TestEntity()
{
Name = "xiaoming",
TotalScore = 100,
UserFields = new UserField[]
{
new UserField()
{
Name = "姓名",
Value = "xaioming",
},
new UserField()
{
Name = "部门",
Value = "1212"
},
new UserField()
{
Name = "工号",
Value = "121213131"
},
}
}
};
data.ToExcelFile($@"{Directory.GetCurrentDirectory()}\output.xls");
Console.WriteLine("complete.");
}
private class TestEntity
{
public string Name { get; set; }
public UserField[] UserFields { get; set; }
public int TotalScore { get; set; }
}
private class UserField
{
public string Fid { get; set; }
public string Name { get; set; }
public string Value { get; set; }
}
}
}
WeihanLi commented
这样可以满足你的需求吗?
zhujinhu21 commented
试过了,可以谢谢
hailin-jin commented
我的Model里有个基类Id属性,我在导出的时候忽略Id列会报错,怎么忽略这个属性呢
WeihanLi commented
hailin-jin commented
下面图片是问题复现,DEMO我晚点重写个试试。
…------------------ 原始邮件 ------------------
发件人: "liweihan"<notifications@github.com>;
发送时间: 2019年12月19日(星期四) 中午1:47
收件人: "WeihanLi/WeihanLi.Npoi"<WeihanLi.Npoi@noreply.github.com>;
抄送: "smile的苦瓜"<892465013@qq.com>;"Comment"<comment@noreply.github.com>;
主题: Re: [WeihanLi/WeihanLi.Npoi] 导出到excel的列是动态不固定的 (#51)
我的Model里有个基类Id属性,我在导出的时候忽略Id列会报错,怎么忽略这个属性呢
有具体错误信息吗,能提供一个可以复现问题的 demo 吗
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
WeihanLi commented
@hailin-jin ,不需要 demo 了,我复现了这个问题并发布了 1.6.1 版本,你可以用 1.6.1 版本试一下
hailin-jin commented
好的,谢谢!昨天一直忙都没时间弄,现在才看到邮件~~
…------------------ 原始邮件 ------------------
发件人: "liweihan"<notifications@github.com>;
发送时间: 2019年12月19日(星期四) 下午5:08
收件人: "WeihanLi/WeihanLi.Npoi"<WeihanLi.Npoi@noreply.github.com>;
抄送: "smile的苦瓜"<892465013@qq.com>;"Mention"<mention@noreply.github.com>;
主题: Re: [WeihanLi/WeihanLi.Npoi] 导出到excel的列是动态不固定的 (#51)
@hailin-jin ,不需要 demo 了,我复现了这个问题并发布了 1.6.1 版本,你可以用 1.6.1 版本试一下
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.