사용자가 버튼을 클릭하면 컨트롤러에서 .xlsx 문서를 내보내려고합니다. 내 모델은 다음과 같습니다 : 문자열 속성 게다가.NET 내보내기를 Excel로 내보내기 - 목록 속성을 표시하지 않습니다.
public class ExportOrdersViewModel
{
public int Id { get; set; }
public string CustomerFirstName { get; set; }
public string CustomerLastName { get; set; }
public string CustomerEmail { get; set; }
public string CustomerMobile { get; set; }
public string ShippingStreet { get; set; }
public string ShippingCity { get; set; }
public string ShippingCountry { get; set; }
public string ShippingPostalCode { get; set; }
public string ShippingTo { get; set; }
public bool IsShipped { get; set; }
public ICollection<ExportOrdersItemViewModel> Items { get; set; }
}
public class ExportOrdersItemViewModel
{
public string TicketName { get; set; }
public string EventName { get; set; }
public int Quantity { get; set; }
public string CurrencyId { get; set; }
public string PaymentCurrencyId { get; set; }
public string UnitPrice { get; set; }
public string PaymentUnitPrice { get; set; }
}
는 ExportOrdersViewModel 항목의 목록이 포함되어 있습니다. 파일을 만들 때 행을 만들 때이 목록을 셀에 표시하려고합니다.
파일을 만들려면 ClosedXML을 사용하고 있습니다. 파일을 만들기 전에 컨트롤러에서 모든 ExportOrdersViewModel 속성이 포함 된 DataTable과 ExportOrdersItemViewModel의 속성이 포함 된 다른 DataTable을 참조하는 행을 만들었습니다. Parrent DataTable은 통합 문서에 전달됩니다. 여기
당신은 내가 그 일을하고 어떻게 볼 수 있습니다
나는 주문 DataTable에, 그것은 해당 항목의 DataTable에 대한 참조를 포함하는 디버그 모드에서 확인, 그러나 나는 통과 할 때 통합 문서이다 DataTable orders = new DataTable();
orders.Columns.Add("OrderID", typeof(string));
orders.Columns.Add("Items", typeof(DataTable));
orders.Columns.Add("IsShipped", typeof(bool));
DataTable items = new DataTable();
items.Columns.Add("TicketName", typeof(string));
items.Columns.Add("Quantity", typeof(int));
items.Columns.Add("Currency", typeof(string));
exportModels.ForEach(o => orders.Rows.Add(
o.Id,
(DataTable)GetItems(o.Items),
o.IsShipped
));
, 파일 항목 행이 비어 있습니다. 이 출력 파일과 PRINTSCREEN입니다
XLWorkbook workbook = new XLWorkbook();
workbook.Worksheets.Add(orders, "Orders");
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=\"HelloWorld.xlsx\"");
using (MemoryStream memoryStream = new MemoryStream())
{
workbook.SaveAs(memoryStream);
memoryStream.WriteTo(Response.OutputStream);
memoryStream.Close();
}
Response.End();
: 여기
을 그리고 난이 다음과 같이 만들고 싶어 : https://aspblogs.blob.core.windows.net/media/muhanadyounis/Media/linqParentChild_615EF617.jpg
이 https://aspblogs.blob.core.windows.net/media/muhanadyounis/Media/linqParentChild_615EF617.jpg 엑셀의 스크린 샷입니다 : 코드의 다음 조각에서 내가 내 파일을 만든 방법은? 그 것처럼 보이지 않습니다. –
그렇지 않습니다. 방금 그 모양을 만들고 싶었습니다 –
Excel에서 불가능합니다. –