Magicodes.IE
Magicodes.IE copied to clipboard
如何自定义导出表头顺序?
A | B | C |
---|---|---|
1 | 2 | 3 |
4 | 5 | 6 |
根据某些规则达到
A | C | B |
---|---|---|
1 | 3 | 4 |
4 | 6 | 5 |
可以参考以下代码:
[ExcelExporter(Name = "测试", TableStyle = TableStyles.Dark10, AutoFitAllColumn = true, AutoFitMaxRows = 5000)]
public class ExportTestDataWithAttrs
{
/// <summary>
/// Text:索引10
/// </summary>
[ExporterHeader(DisplayName = "加粗文本", IsBold = true, ColumnIndex = 10, WrapText = true)]
public string Text { get; set; }
/// <summary>
/// Text2:索引1
/// </summary>
[ExporterHeader(DisplayName = "普通文本", ColumnIndex = 1, Hidden = true)]
public string Text2 { get; set; }
/// <summary>
/// Text3:索引2
/// </summary>
[ExporterHeader(DisplayName = "忽略", IsIgnore = true, ColumnIndex = 2)]
public string Text3 { get; set; }
/// <summary>
/// Number:索引3
/// </summary>
[ExporterHeader(DisplayName = "数值", Format = "#,##0", ColumnIndex = 3)]
public int Number { get; set; }
[ExporterHeader(DisplayName = "名称", IsAutoFit = true)]
public string Name { get; set; }
/// <summary>
/// 时间测试
/// </summary>
[ExporterHeader(DisplayName = "日期1", Format = "yyyy-MM-dd")]
public DateTime Time1 { get; set; }
/// <summary>
/// 时间测试
/// </summary>
[ExporterHeader(DisplayName = "日期2", Format = "yyyy-MM-dd HH:mm:ss")]
public DateTime? Time2 { get; set; }
[ExporterHeader(Width = 100)]
public DateTime Time3 { get; set; }
public DateTime Time4 { get; set; }
/// <summary>
/// 长数值测试
/// </summary>
[ExporterHeader(DisplayName = "长数值", Format = "#,##0")]
public long LongNo { get; set; }
}
可以参考以下代码:
[ExcelExporter(Name = "测试", TableStyle = TableStyles.Dark10, AutoFitAllColumn = true, AutoFitMaxRows = 5000)] public class ExportTestDataWithAttrs { /// <summary> /// Text:索引10 /// </summary> [ExporterHeader(DisplayName = "加粗文本", IsBold = true, ColumnIndex = 10, WrapText = true)] public string Text { get; set; } /// <summary> /// Text2:索引1 /// </summary> [ExporterHeader(DisplayName = "普通文本", ColumnIndex = 1, Hidden = true)] public string Text2 { get; set; } /// <summary> /// Text3:索引2 /// </summary> [ExporterHeader(DisplayName = "忽略", IsIgnore = true, ColumnIndex = 2)] public string Text3 { get; set; } /// <summary> /// Number:索引3 /// </summary> [ExporterHeader(DisplayName = "数值", Format = "#,##0", ColumnIndex = 3)] public int Number { get; set; } [ExporterHeader(DisplayName = "名称", IsAutoFit = true)] public string Name { get; set; } /// <summary> /// 时间测试 /// </summary> [ExporterHeader(DisplayName = "日期1", Format = "yyyy-MM-dd")] public DateTime Time1 { get; set; } /// <summary> /// 时间测试 /// </summary> [ExporterHeader(DisplayName = "日期2", Format = "yyyy-MM-dd HH:mm:ss")] public DateTime? Time2 { get; set; } [ExporterHeader(Width = 100)] public DateTime Time3 { get; set; } public DateTime Time4 { get; set; } /// <summary> /// 长数值测试 /// </summary> [ExporterHeader(DisplayName = "长数值", Format = "#,##0")] public long LongNo { get; set; } }
这个是写死在特性ColumnIndex里了,如何动态修改顺序呢?
我实现的方式是:先转换为DataTable,然后设置DataTable列的顺序,然后再导出。
我实现的方式是:先转换为DataTable,然后设置DataTable列的顺序,然后再导出。
我也是,但是这样特性就失效了。。