EPPlus – Excel как вложение электронной почты – Имена столбцов отсутствуют

Я использую EPPlus . Мое требование – отправить excel file в качестве attachment . Поэтому я заполняю DataTable , определяя столбцы и добавляя строки.

Все работает нормально. Пока приложение не достигнет электронной почты. Но когда файл Excel открывается, то Columns which i have defined are missing . Строки отображаются правильно.

 ..... MemoryStream ms = new MemoryStream(); ms = DataTableToExcelXlsx(dt, "Attendance"); ms.Position = 0; Attachment file = new Attachment(ms, "Attendance.xlsx"); message.Attachments.Add(file); ..... smtp.Send(message); 

 public static MemoryStream DataTableToExcelXlsx(DataTable table, string sheetName) { MemoryStream Result = new MemoryStream(); ExcelPackage pack = new ExcelPackage(); ExcelWorksheet ws = pack.Workbook.Worksheets.Add(sheetName); int col = 1; int row = 1; foreach (DataRow rw in table.Rows) { foreach (DataColumn cl in table.Columns) { if (rw[cl.ColumnName] != DBNull.Value) ws.Cells[row, col].Value = rw[cl.ColumnName].ToString(); col++; } row++; col = 1; } pack.SaveAs(Result); return Result; } 

Почему столбцы не отображаются в Excel. Они присутствуют в Datatable. Что такое решение для этой проблемы?

Я не добавил колонки, поэтому они не появлялись:

 // Columns int rowIndex = 1; int colIndex = 1; foreach (DataColumn dc in table.Columns) //Creating Headings { var cell = ws.Cells[rowIndex, colIndex]; //Setting the background color of header cells to Gray var fill = cell.Style.Fill; fill.PatternType = ExcelFillStyle.Solid; fill.BackgroundColor.SetColor(Color.LightGray); //Setting Top/left,right/bottom borders. var border = cell.Style.Border; border.Bottom.Style = border.Top.Style = border.Left.Style = border.Right.Style = ExcelBorderStyle.Thin; //Setting Value in cell cell.Value = dc.ColumnName; colIndex++; } // Rows int col = 1; int row = 2; foreach (DataRow rw in table.Rows) { foreach (DataColumn cl in table.Columns) { if (rw[cl.ColumnName] != DBNull.Value) ws.Cells[row, col].Value = rw[cl.ColumnName].ToString(); col++; } row++; col = 1; } pack.SaveAs(Result); return Result; 

XlsIO – это библиотека .NET, которая читает и записывает файлы Excel 2003/2007/2010/2013/2016. Используя XlsIO , вы можете легко импортировать таблицу данных xls / xlsx. Весь набор средств управления доступен бесплатно (коммерческие приложения также) через лицензионную программу сообщества, если вы соответствуете требованиям. Лицензия сообщества – это полный продукт без ограничений или водяных знаков.

Шаг 1. Создание консольного приложения.

Шаг 2. Добавьте ссылку на Syncfusion.XlsIO.Base и Syncfusion.Compression.Base; Вы можете добавить эту ссылку в свой проект, используя также NuGet.

Шаг 3: Скопируйте и вставьте следующий фрагмент кода.

Следующий фрагмент кода иллюстрирует, как заполнять новые строки из последней строки с помощью XlsIO

 using (ExcelEngine excelEngine = new ExcelEngine()) { //Instantiate the excel application object. IApplication application = excelEngine.Excel; application.DefaultVersion = ExcelVersion.Excel2013; //Create a workbook with single worksheet IWorkbook workbook = application.Workbooks.Create(1); IWorksheet worksheet = workbook.Worksheets[0]; //Style definition IStyle style = workbook.Styles.Add("Border"); style.Borders.Color = ExcelKnownColors.Black; style.Borders[ExcelBordersIndex.EdgeBottom].LineStyle = ExcelLineStyle.Thin; style.Borders[ExcelBordersIndex.EdgeLeft].LineStyle = ExcelLineStyle.Thin; style.Borders[ExcelBordersIndex.EdgeRight].LineStyle = ExcelLineStyle.Thin; style.Borders[ExcelBordersIndex.EdgeTop].LineStyle = ExcelLineStyle.Thin; //Import data table worksheet.ImportDataTable(GetDataTable(), true, 1, 1); //Assgin created border worksheet.UsedRange.CellStyle = style; //Autofit columns worksheet.UsedRange.AutofitColumns(); //Save the excel document using (MemoryStream excelStream = new MemoryStream()) { workbook.SaveAs(excelStream); workbook.Close(); excelStream.Position = 0; System.Net.Mail.Attachment oAttachment = new System.Net.Mail.Attachment(excelStream, "DataTableImported.xlsx"); } } 

Для получения дополнительной информации о XlsIO, пожалуйста, обратитесь к нашей справочной документации

Примечание. Я работаю в Syncfusion

Давайте будем гением компьютера.