Как я могу сгенерировать файл Excel с повернутой вниз буквой 90 градусов в C #? - PullRequest
0 голосов
/ 17 октября 2018

Я работаю над приложением Human Resources, которое должно показывать отчет о рабочей среде в формате Excel, как это показано на этом изображении .

Теперь я ищу помощь по этой теме., Я использую ClosedXML.Excel, в настоящее время я создаю свои файлы Excel с помощью метода, который я создаю сам, он входит в Список объектов и создает файл Excel в ответ на запрос http.Вот код:

public static bool ConvertToExcel<T>(IList<T> data, string excelName, string sheetName)
    {
        PropertyDescriptorCollection properties =

        TypeDescriptor.GetProperties(typeof(T));

        DataTable table = new DataTable();

        foreach (PropertyDescriptor prop in properties)
            table.Columns.Add(prop.Name.Replace("_"," "), Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);

        foreach (T item in data)
        {
            DataRow row = table.NewRow();
            foreach (PropertyDescriptor prop in properties)
                row[prop.Name.Replace("_", " ")] = prop.GetValue(item) ?? DBNull.Value;
            table.Rows.Add(row);
        }

        try
        {
            using (XLWorkbook wb = new XLWorkbook())
            {
                wb.Worksheets.Add(table, sheetName);

                System.Web.HttpContext.Current.Response.Clear();
                System.Web.HttpContext.Current.Response.Buffer = true;
                System.Web.HttpContext.Current.Response.Charset = "";
                string FileName = excelName + ".xlsx";

                System.Web.HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + FileName);
                using (MemoryStream MyMemoryStream = new MemoryStream())
                {
                    wb.SaveAs(MyMemoryStream);
                    MyMemoryStream.WriteTo(System.Web.HttpContext.Current.Response.OutputStream);
                    System.Web.HttpContext.Current.Response.Flush();
                    System.Web.HttpContext.Current.Response.End();
                }
            }
        }
        catch (Exception e) 
        {
            throw e;
            return false;
        }
        return true;
    }

Из-за длинных имен боссов он значительно расширяет столбец Excel на простой процент, я хочу знать, смогу ли я добиться поворота (на 90 градусов)письмо заголовка.Этого можно добиться с моей текущей библиотекой ClosedXML.Excel?Я хочу использовать тот же метод для создания этого отчета рабочей среды.

Заранее спасибо :)

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Спасибо @Raidri.

Я изменил код:

   wb.Worksheets.Add(table, sheetName);

на:

   var ws = wb.Worksheets.Add(table, sheetName);
   ws.Row(1).Style.Alignment.SetTextRotation(180);
   ws.Tables.FirstOrDefault().ShowAutoFilter = false;

, чтобы текст поворачивался на 90 градусов вниз, и я удаляю фильтры.

0 голосов
/ 17 октября 2018

Вы можете сделать это, используя стили вращения текста aligment:

cell.Style.Alignment.SetTextRotation(90);
...