在导出excel之前更改数据
问题描述:
我有一个包含布尔值的列表。我想将该列表导出为excel,但它必须对客户有意义。当我按原样导出它时,它会按预期显示True
和False
之类的值,但这些值可能对客户的看法没有意义。这是我做的Excel导出方式:在导出excel之前更改数据
LiveModReports model = new LiveModReports();
List<ModerationDM.DetailedContent> liveModListDM = new List<ModerationDM.DetailedContent>();
liveModListDM = contentBLL.GetContentsForMod(modId, startDate, endDate);
if (liveModListDM != null)
{
model.ContentExcelList = new List<ContentExcel>();
foreach (var item in liveModListDM)
{
model.ContentExcelList.Add(new ContentExcel()
{
ModerasyonNumarasi = item.ModId,
Kategori = item.Category,
AltKategori = item.SubCategory,
IcerikAdresi = item.ContentURL,
IcerikSahibiTamAdi = item.ContentUFullName,
IcerikSahibiEPosta = item.ContentUserEmail,
IcerikMetni = item.ContentText,
Durumu = item.ResultCode,
SonDegistirilmeTarihi = (DateTime)item.ModifiedTime,
ModerasyonKategorisi = item.ModCategoryName,
IcerikNumarasi = item.ContentSeqNum,
BegeniPuani = item.LikeCount,
BegenilmemePuani = item.DislikeCount,
PaneldenVerilmisCevapMi = item.IsAnswer,
CevaplanmisMi = item.IsAnswered,
RaporlamaBasligi = item.ReportHeader
});
}
}
CreateExcelFile.CreateExcelDocument(model.ContentExcelList, "IcerikListesi.xlsx", System.Web.HttpContext.Current.Response);
例如,IsAnswer必须显示为“EVET”,这意味着“是”在土耳其,但它显示为“真”了。如何在写入excel之前更改这些值?
答
使用三元运算,以与您的数据更有意义,例如:
PaneldenVerilmisCevapMi = (item.IsAnswer ? "Yes" : "No"),
...
解释:如果IsAnswers
计算结果为true
,用“是”,否则,用“无”。
请注意,PaneldenVerilmisCevapMi
必须是string
。
UPDATE:
如果item.IsAnswer
是可空类型,改变你的if语句:
PaneldenVerilmisCevapMi = (item.IsAnswer.HasValue ? "Yes" : "No"),
答
你可以简单地写:
PaneldenVerilmisCevapMi = (item.IsAnswer) ? "Evet" : "No"
答
你是一个准备之前写入Excel。因此,您可以简单地更改属性以适合您的需求。
像
PaneldenVerilmisCevapMi = (item.IsAnswer) ? "Evet" : "No"
例子会为你工作,但你可以用这些对象的东西。例如 - 将它传递给一种方法,将True
更改为Evet
或其他任何对最终用户而言都是痛苦的东西。
MakeDataReadable(model.ContentExcelList);
不需要那些括号。 – 2014-11-03 14:26:32
@PaulZahra对,它更具可读性。 – 2014-11-03 14:27:31
IsAnswer可为空,它会导致错误,如果它们是真/假,我怎样才能检查可空? – 2014-11-03 14:31:00