2016-10-13 1 views
3

Я использую asp.net MVC 4 и epplus как пакет nuget для экспорта моих данных в файл excel. Я делаю это в следующем виде:Семейство шрифтов EPPlus не касается

 var excel = new ExcelPackage(); 
     var workSheet = excel.Workbook.Worksheets.Add("Consumption"); 
     workSheet.View.RightToLeft = true; 
     for (var col = 1; col <= totalCols; col++) 
     { 
      workSheet.Cells[1, col].Style.Font.Name = "B Zar"; 
      workSheet.Cells[1, col].Style.Font.Size = 16; 
      workSheet.Cells[1, col].Style.Font.Bold = true; 
      workSheet.Cells[1, col].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; 
      workSheet.Cells[1, col].Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightGray); 
      workSheet.Cells[1, col].Value = ds.Tables[0].Columns[col - 1].ColumnName; 
     } 

     for (var row = 1; row <= totalRows; row++) 
      for (var col = 0; col < totalCols; col++) 
      { 
       workSheet.Cells[row + 1, col + 1].Style.Font.Name = "B Zar"; 
       workSheet.Cells[row + 1, col + 1].Style.Font.Size = 11; 
       workSheet.Cells[row + 1, col + 1].Value = ds.Tables[0].Rows[row - 1][col]; 
      } 

     workSheet.Cells[1, 1, totalRows + 1, totalCols].Style.Border.Top.Style = 
      workSheet.Cells[1, 1, totalRows + 1, totalCols].Style.Border.Bottom.Style = 
       workSheet.Cells[1, 1, totalRows + 1, totalCols].Style.Border.Right.Style = 
        workSheet.Cells[1, 1, totalRows + 1, totalCols].Style.Border.Left.Style = 
         OfficeOpenXml.Style.ExcelBorderStyle.Thin; 
     workSheet.Cells[1, 1, totalRows + 1, totalCols].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; 

     using (var memoryStream = new MemoryStream()) 
     { 
      Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
      Response.AddHeader("content-disposition", "attachment; filename=Consumptions.xlsx"); 
      excel.SaveAs(memoryStream); 
      memoryStream.WriteTo(Response.OutputStream); 
      Response.Flush(); 
      Response.End(); 
     } 

Проблема заключается в том, что, когда я загрузить файл и открыть его в Excel 2016, семейство шрифтов не влияет, но на поле имя шрифта, он появляется. Если я сосредоточусь на комбинированном поле и нажмите Enter, это повлияет на семейство шрифтов.

Как я могу решить эту проблему?

ответ

1

Ответ здесь:

Когда я изменить стиль шрифта для системных шрифтов, таких как «Tahoma», «Arial» и т.д. это влияет, но когда Я не использую другой шрифт!

Это потому, что установленные шрифты должны быть истинными, а шрифт, который я пытался использовать, не является истинным типом.

3

Попробуйте это:

var allCells = sheet.Cells[1, 1, sheet.Dimension.End.Row, sheet.Dimension.End.Column]; 
var cellFont = allCells.Style.Font; 
cellFont.SetFromFont(new Font("Times New Roman", 12)); 
cellFont.Bold = true; 
cellFont.Italic = true; 
1
workSheet.Cells.Style.Font.Name = "Arial Narrow"; 
workSheet.Cells.Style.Font.Size = 10; 

Это затронет все строки и столбцы.

+0

В чем Ваш вопрос? приведенный выше код изменит стиль шрифта и размер вашей таблицы. –

Смежные вопросы