public byte[] Export <TData, TColumn>(ExportDataHaveColumnModel <TData, TColumn> model) where TData : HavePropertyModel where TColumn : CustomizedColumnModel { IWorkbook workbook = new XSSFWorkbook(); ISheet sheet = workbook.CreateSheet(typeof(TData).Name); var columns = _exportColumnProvider.Provide <TData>(); var customizedColumns = model.Columns; //表头 IRow rowHead = sheet.CreateRow(0); int columnIndex = 0; foreach (var column in columns) { ICell cell = rowHead.CreateCell(columnIndex); cell.SetCellValue(column.DisplayName); columnIndex++; } foreach (var column in customizedColumns) { ICell cell = rowHead.CreateCell(columnIndex); cell.SetCellValue(column.Name); columnIndex++; } var rowIndex = 1; foreach (var data in model.Datas) { IRow rowBody = sheet.CreateRow(rowIndex); int columnValueIndex = 0; foreach (var column in columns) { ICell cell = rowBody.CreateCell(columnValueIndex); var value = column.Property.GetValue(data); cell.SetCellValue(value == null ? string.Empty : value.ToString()); columnValueIndex++; } foreach (var column in customizedColumns) { ICell cell = rowBody.CreateCell(columnValueIndex); cell.SetCellValue(data.GetPropertyValue(column.Id)); columnValueIndex++; } rowIndex++; } using (MemoryStream stream = new MemoryStream()) { workbook.Write(stream); var buffer = stream.GetBuffer(); stream.Close(); return(buffer); } }
public byte[] Export <TData>(ExportDataModel <TData> model) where TData : SaasBaseModel { IWorkbook workbook = base.CreateWorkbook(); ISheet sheet = base.CreateSheet(workbook, typeof(TData).Name); var columns = _exportColumnProvider.Provide <TData>(); base.SetHead(sheet, columns); var rowIndex = 1; foreach (var data in model.Datas) { SetRows <TData>(sheet, data, rowIndex, columns); rowIndex++; } return(base.ExportBase(workbook)); }