导出execl报表时信息显示小知识

在我们导出报表的时候,可能会遇到如:我在车辆表导出车辆信息表,但是车型信息不想显示ID,想显示车型名称,那么这个时候可能有人会说,直接if判断下不可以了。确实,if判断可以实现,但是如果用户新增一条车型信息呢?你是不是还得修改项目重新发布?所以使用if判断其实是不规范的。

下面我将为大家介绍自己遇到此类问题时的小方法:

第一种:

如:导出所有车辆信息数据,显示车型名称。那么我在车辆信息中肯定会有车型ID,这个时候我们可以通过查询车型表所有信息,然后通过for循环判断当前车辆的车型ID是否匹配,如果匹配则添加当前车型数据中的车型名称。具体代码如下:

//查询所有车型数据

Expression<Func<CarClassEntity, bool>> predicates = t => t.IsDeleted == false;
List<CarClassEntity> carClasses = new CarClassService().GetCarClassExeclDate(predicates);
for (int j = 0; j < carClasses.Count; j++) //循环判断
{
if (cardate[i].CarClassId.ToString() == carClasses[j].Id.ToString()) //判断当前车辆信息的车辆ID跟哪个车型信息的ID匹配
{
row.CreateCell(4).SetCellValue(carClasses[j].CarName);  //匹配则添加当前车型信息的车型名称
}
}

 

第二种:使用EF联表查询,直接查询出两张表的数据。具体代码如下,

 

/// <summary>
/// 两表联查数据
/// </summary>
/// <param name="carclass"></param>
/// <param name="car"></param>
/// <returns></returns>
public List<CarInsureDto> GetCarLists(List<CarInsureEntity> carInsure, List<CarEntity> car)
{
List<CarInsureDto> listUser = new List<CarInsureDto>();  //CarInsureDto存储两表字段的类
listUser = (from u in car
from g in carInsure
where g.CarId==u.Id  //链接条件
select new CarInsureDto()  //需要获取的字段
{
CarNum=u.CarNum,
Company=g.Company,
ForTime=g.ForTime,
InsureMoney =g.InsureMoney,
InsureType =g.InsureType
}).ToList();

return listUser;    //返回List
}

 

当然还有很多种方法,有兴趣的朋友可以去了解。

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注