Установить выравнивание текста по центру в документе Excel, используя OpenXML с C # - PullRequest
6 голосов
/ 20 марта 2012

У меня есть документ, который создает моя страница asp.net, и мне нужно выровнять текст некоторых столбцов по центру. Я открыл документ после того, как вручную центрировать столбцы в openXML SDK, но отображаемый код не дает желаемого результата.

Вот как я настраиваю произвольную ширину этих столбцов, и я хотел бы добавить к этой функции (метод, whatevs) возможность центрировать текст:

private static Column CreateColumnData(UInt32 StartColumnIndex, UInt32 EndColumnIndex, double ColumnWidth)
    {
        Column column;
        column = new Column();
        column.Min = StartColumnIndex;
        column.Max = EndColumnIndex;
        column.Width = ColumnWidth;
        column.CustomWidth = true;
        //the SDK says to add this next line to center the text but it doesn't work
        column.Style = (UInt32Value)6U;

        return column;
    }

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

ПРИМЕЧАНИЕ. Помните, что я использую OpenXML и не буду использовать Microsoft.Office.Interop.Excel

Ответы [ 5 ]

7 голосов
/ 20 марта 2012

Мне кажется, проблема в том, что вы пытаетесь стилизовать столбец , когда необходимо отформатировать отдельные ячейки , чтобы использовать определенное горизонтальное выравнивание.

Я оглянулся и нашел следующую документацию MSDN:

http://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.cellformat_properties.aspx

http://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.alignment.aspx

Я также нашел здесь пример кода (хотя сам не проверял):

http://blogs.msdn.com/b/chrisquon/archive/2009/11/30/stylizing-your-excel-worksheets-with-open-xml-2-0.aspx

Я использую Interop большую часть времени сам и знаю, что при оформлении электронных таблиц я использовал стили ячеек, а не столбцов или строк.

Вы должны иметь возможность создать один стиль и просто применять его несколько раз к ячейкам по мере их создания.

1 голос
/ 03 августа 2016

вы можете попробовать это, чтобы иметь объединенную ячейку, редактировать высоту и столбцы и выравнивать центр по горизонтали и вертикали

 var worksheet = wb.Worksheets.Add("Overzicht");

            //  Adding text
            worksheet.Cell("B2").Value = "Overzicht activiteit";
             var rngMainTitle = worksheet.Range("B2:E3");
             rngMainTitle.FirstCell().Style
                 .Font.SetBold()
                 .Fill.SetBackgroundColor(XLColor.CornflowerBlue)
                 .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center)
                 .Alignment.SetVertical(XLAlignmentVerticalValues.Center);

             //Merge title cells
             rngMainTitle.FirstRow().Merge();
            worksheet.Column(2).Width = 31;
            worksheet.Column(3).Width = 18;
            worksheet.Column(4).Width = 18;
            worksheet.Column(5).Width = 18;
            worksheet.Row(2).Height = 25;
1 голос
/ 07 марта 2014
0 голосов
/ 07 сентября 2018

Вы можете просто выбрать ячейку и установить выравнивание текста:

ws.Cell("A1").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;

ws - это ваш рабочий лист:

 XLWorkbook workbook = new XLWorkbook();
        var ws = workbook.Worksheets.Add("Text align");
0 голосов
/ 18 июля 2015

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

workSheet_range.HorizontalAlignment =
     Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
...