如何解决在Excel中导出子列表的动态列
我想导出可为CompanyActivitiesList
生成动态Colum的excel,即如果CompanyActivitiesList
有5个计数,则ServiceName
和ProductsHNSCode
列将生成5次具有不同值的值。
//Class Files
public class CompanyList : EntityDto
{
public string CompanyName { get; set; }
public string Location { get; set; }
public string PhoneNumber { get; set; }
public string EmailAddress { get; set; }
public List<CompanyActivitiesList> CompanyActivitiesList { get; set; }
}
public class CompanyActivitiesList
{
public string ServiceName { get; set; }
public string ProductsHNSCode { get; set; }
}
//Export Excel Code
var companyList = _companyAppService.ExportCompaniesToExcel(input);
List<ExportCompanyList> ExportCompanyListDto = new List<ExportCompanyList>();
List<CompanyActivitiesList> CompanyActivitiesList = new List<CompanyActivitiesList>();
foreach (var item in companyList)
{
var model = new ExportCompanyList();
model.CompanyName = item.CompanyName;
model.EmailAddress = item.EmailAddress;
model.PhoneNumber = item.PhoneNumber;
model.Location = item.Location;
foreach (var A1 in item.CompanyActivitiesList)
{
var CAList = new CompanyActivitiesList();
CAList.ServiceName = A1.ServiceName;
CAList.ProductsHNSCode = A1.ProductsHNSCode;
CompanyActivitiesList.Add(CAList);
}
model.CompanyActivitiesList = CompanyActivitiesList;
ExportCompanyListDto.Add(model);
}
string FileName = "CompanyList" + DateTime.Now.Ticks + ".xls";
GridView gv = new GridView();
gv.DataSource = ExportCompanyListDto;
gv.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition","attachment; filename=" + FileName);
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
Response.ContentType = "application/ms-excel";
Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
byte[] bytes = Encoding.UTF8.GetBytes(sw.ToString());
string destPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "\\Temp\\",FileName);
System.IO.File.WriteAllBytes(destPath,bytes);
return Json(new { fileName = FileName });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。