Я просто пытаюсь экспортировать Datatable
(Datatable
не имеет данных, имеющих только заголовок). Кроме того, у меня есть List<String>
, который я хочу добавить в столбец, так что после экспорта в excel этот столбец (все ячейки, кроме заголовка) должен содержать данные списка как формат Dropdown
.Как назначить список ячейке (формат раскрывающегося списка) в closedXML при экспорте в Excel
У меня много googled и не удалось найти какие-либо решения. Ниже приведены ссылки, которые я посетил, но не повезло.
И ниже тот, что я пытался до сих пор.
private void ExcelExport(DataTable dt, GridView Template)
{
bool isListRequired = false;
List<string> groupCodeList = new List<string>(); ;
Template.DataBind();
if (Template.HeaderRow != null)
{
foreach (TableCell cell in Template.HeaderRow.Cells)
{
if (cell.Text == "ActivityGroup_Code")
{
isListRequired = true;
groupCodeList = db.PMS_M_ActivityGroup.Select(a => a.ActivityGroup_Code).ToList();
}
dt.Columns.Add(cell.Text);
}
var workbook = new XLWorkbook();
var returnValue = workbook.AddWorksheet(dt);
var worksheet = workbook.Worksheet(1);
if (isListRequired)
{
//worksheet.Cell("E2").DataValidation.List(string.Join("",groupCodeList.ToArray()));
//worksheet.Cell(2,5).InsertData(groupCodeList);
// Trying to add a list to the Cell (E2) - and applying datavalidation to the Column (5th column - E Range)
// Dropdown is created in excel(with blank) but data is not population to that dropdown
worksheet.Cell(2, 5).InsertData(groupCodeList);
worksheet.Column(5).SetDataValidation().List(string.Join("", groupCodeList.ToArray()));
}
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=ExcelFormat.xlsx");
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.Charset = "";
using (MemoryStream MyMemoryStream = new MemoryStream())
{
workbook.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(Response.OutputStream);
Response.Flush();
Response.End();
}
}
}
И код, где я звоню этот метод
List<PMS_M_ActivityGroup> activitygroup = new List<PMS_M_ActivityGroup>();
activitygroup = db.PMS_M_ActivityGroup.Select(a => a).ToList();
DataTable dt2 = new DataTable("Excel Template");
GridView Template2 = new GridView();
Template2.DataSource = activitygroup;
ExcelExport(dt2, Template2);
Запрос вы предоставить мне решение, как для достижения требуемой функциональности.
Спасибо