簡體   English   中英

"使用 OpenXML 和 C# 在 Excel 文檔中設置文本居中對齊"

[英]Set text align to center in an Excel document using OpenXML with C#

我有一個我的 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;
    }

我認為問題是你正在嘗試設置列的樣式 ,當它是需要格式化為使用特定水平對齊的單個單元格時。

我環顧四周,發現了以下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,並且知道在編寫電子表格時我設置了單元格,而不是列或行。

您應該能夠創建單個樣式,並在創建單元格時將其多次應用於單元格。

以下方法對我來說很好

//using OfficeOpenXml;
//using OfficeOpenXml.Style;

workSheet.Cells[rowIndex, 22].Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;

參考

  1. 使用開放XML SDK所需的基本格式
  2. 使用C#中的openXML在excel表中着色單元格
  3. OpenXML電子表格中的單元格樣式(SpreadsheetML)

你可以嘗試這個有一個合並的單元格,編輯高度和列,並水平和垂直對齊中心

 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;

您只需選擇單元格並設置文本對齊:

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

ws是你的工作表:

 XLWorkbook workbook = new XLWorkbook();
        var ws = workbook.Worksheets.Add("Text align");

如果您正在尋找如何對齊 excel 單元格中的文本,您需要在cellFormat<\/strong>對象上應用對齊

 CellFormat cellFormat = new CellFormat() { NumberFormatId = 0, FontId = 0, 
 FillId = 0, BorderId = 0, ApplyAlignment = true }; 
 Alignment alignment = new Alignment();
 alignment.Vertical = VerticalAlignmentValues.Center;
 alignment.Horizontal = HorizontalAlignmentValues.Center;
 CellFormat.Alignment = alignment;

試試這個

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM