c#到excel动态添加字典数据
我有一个报表工具,它可以将数据从API导出到excel,我遇到的问题是,在这个数据中有一个字典,其中有更多的数据,我也想显示在同一行中,但当我尝试导出这些数据时,excel中的结果是这样的 正如您所看到的,它最终成为Models.UserDetails之类的东西。如何正确地使其显示字典中的值。这就是我到目前为止所做的c#到excel动态添加字典数据,c#,excel,dictionary,C#,Excel,Dictionary,我有一个报表工具,它可以将数据从API导出到excel,我遇到的问题是,在这个数据中有一个字典,其中有更多的数据,我也想显示在同一行中,但当我尝试导出这些数据时,excel中的结果是这样的 正如您所看到的,它最终成为Models.UserDetails之类的东西。如何正确地使其显示字典中的值。这就是我到目前为止所做的 foreach (var reportItem in model.Entries) { var userDetails= new List<UserDetails&g
foreach (var reportItem in model.Entries)
{
var userDetails= new List<UserDetails>();
foreach (KeyValuePair<int, UserDetails> entry in reportItem.UserDetails)
{
userDetails.Add(entry.Value);
}
exportData.ReportDetails.Add(new UserReportExportDetailModel
{
ProductGroup = reportItem.ProductGroup,
UserId = reportItem.ExternalId,
Country = reportItem.Country,
Brand = reportItem.Brand,
FinalScore = reportItem.TotalPoints,
TimeOfLogin = reportItem.Time,
Position = reportItem.Position + 1,
UserDetails = userDetails
});
}
那么,如何让excel中的UserDetails列显示字典中的数据呢?excel无法在单个单元格中显示对象列表,因此您需要帮助他将该列表转换为excel能够理解的内容,例如字符串 伪代码:
foreach (var reportItem in model.Entries) {
var userDetails = new System.Text.StringBuilder();
foreach (KeyValuePair<int, UserDetails> entry in reportItem.UserDetails)
{
userDetails.AppendFormat("{0},{1},{2}", entry.Value.Points, entry.Value.Time, entry.Value.LoginId);
}
exportData.ReportDetails.Add(new UserReportExportDetailModel
{
ProductGroup = reportItem.ProductGroup,
UserId = reportItem.ExternalId,
Country = reportItem.Country,
Brand = reportItem.Brand,
FinalScore = reportItem.TotalPoints,
TimeOfLogin = reportItem.Time,
Position = reportItem.Position + 1,
UserDetails = userDetails.ToString()
});
}
foreach(model.Entries中的var reportItem){
var userDetails=new System.Text.StringBuilder();
foreach(reportItem.UserDetails中的KeyValuePair条目)
{
AppendFormat(“{0},{1},{2}”,entry.Value.Points,entry.Value.Time,entry.Value.LoginId);
}
exportData.ReportDetails.Add(新用户ReportExportDetailModel
{
ProductGroup=reportItem.ProductGroup,
UserId=reportItem.ExternalId,
Country=reportItem.Country,
品牌=报告项。品牌,
FinalScore=reportItem.TotalPoints,
TimeOfLogin=reportItem.Time,
位置=报告项。位置+1,
UserDetails=UserDetails.ToString()
});
}
foreach (var reportItem in model.Entries) {
var userDetails = new System.Text.StringBuilder();
foreach (KeyValuePair<int, UserDetails> entry in reportItem.UserDetails)
{
userDetails.AppendFormat("{0},{1},{2}", entry.Value.Points, entry.Value.Time, entry.Value.LoginId);
}
exportData.ReportDetails.Add(new UserReportExportDetailModel
{
ProductGroup = reportItem.ProductGroup,
UserId = reportItem.ExternalId,
Country = reportItem.Country,
Brand = reportItem.Brand,
FinalScore = reportItem.TotalPoints,
TimeOfLogin = reportItem.Time,
Position = reportItem.Position + 1,
UserDetails = userDetails.ToString()
});
}