excel 导入导出
大约 2 分钟
excel 导入导出
本项目集成了miniExcel
可以简单的处理一些 excel 操作,如果需要更复杂的操作自己可以集成其他 excel 操作类
miniExcel 官方文档传送门
导入
本项目用户管理的导入和种子数据的导入都是通过 miniExcel 实现,具体用法可参考 SysUserController.ImportData
方法 以及 CommonController.InitSeedData
代码生成已经集成,请通过代码生成使用
- 中文表头导入
通过实体类设置属性ExcelColumnName
,名称要和表头一致
public class GenDemoDto
{
[ExcelIgnore]
public int Id { get; set; }
[ExcelColumn(Name = "名称")]
[ExcelColumnName("名称")]
public string Name { get; set; }
[ExcelColumn(Name = "图标")]
[ExcelColumnName("图标")]
public string Icon { get; set; }
}
代码生成的导入只做了基本的校验,更复杂的查看详情
导出
例如以下代码:
/// <summary>
/// 岗位导出
/// </summary>
/// <returns></returns>
[HttpGet("export")]
public IActionResult Export()
{
var list = PostService.GetAll();
string sFileName = ExportExcel(list, "syspost", "岗位");
return SUCCESS(new { path = "/export/" + sFileName, fileName = sFileName });
}
导出文件流
/// <summary>
/// 用户导出
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
[HttpGet("export")]
public IActionResult UserExport([FromQuery] SysUser user)
{
var list = UserService.SelectUserList(user, new PagerInfo(1, 10000));
string result = ExportExcelMini(list.Result, "user", "用户列表");
return ExportExcel(result.Item2, result.Item1);
}
字典数据类型导出
- 枚举
public class GenDemoDto
{
[ExcelColumn(Name = "用户性别")]
public SexType? Sex { get; set; }
}
public enum SexType
{
[Description("男")]
男 = 1,
[Description("女")]
女 = 0,
[Description("未知")]
未知 = 2
}
- 使用字典数据
[ExcelColumn(Name = "显示状态")]
public string ShowStatusLabel { get; set; }
[ExcelColumn(Name = "用户性别")]
public string SexLabel { get; set; }
/// <summary>
/// 导出代码生成演示
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public PagedInfo<GenDemoDto> ExportList(GenDemoQueryDto parm)
{
var predicate = QueryExp(parm);
var response = Queryable()
.Where(predicate.ToExpression())
.Select((it) => new GenDemoDto()
{
ShowStatusLabel = it.ShowStatus.GetConfigValue<Model.System.SysDictData>("sys_normal_disable"),
SexLabel = it.Sex.GetConfigValue<Model.System.SysDictData>("sys_user_sex"),
}, true)
.ToPage(parm);
return response;
}
常用属性
- 指定列宽(ExcelColumnWidthAttribute)
public class Dto
{
[ExcelColumnWidth(20)]
public int ID { get; set; }
[ExcelColumnWidth(15.50)]
public string Name { get; set; }
}
- ExcelColumnAttribute
简化多 Attribute 写法
public class TestIssueI4ZYUUDto
{
[ExcelColumn(Name = "ID",Index =0)]
public string MyProperty { get; set; }
[ExcelColumn(Name = "CreateDate", Index = 1,Format ="yyyy-MM",Width =100)]
public DateTime MyProperty2 { get; set; }
}
- 自定义 Format 格式 (ExcelFormatAttribute) 從 V0.21.0 開始支持有 ToString(string content) 的類別 format
类别
public class Dto
{
public string Name { get; set; }
[ExcelFormat("MMMM dd, yyyy")]
public DateTime InDate { get; set; }
}