在C#中使用OpenXML在Excel文档中设置文本居中

我有一个文档,我的asp.net页面正在创build,我需要alignment某些列的文本居中。 在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; } 

我打开另一种方式,但我认为,解决scheme已经非常简单,我似乎无法得到它。 如果任何人都可以帮助,这将是伟大的。

注意:请记住,我正在使用OpenXML,不会使用Microsoft.Office.Interop.Excel

我认为问题在于,您正试图对列进行样式设置因为需要将单个单元格设置为使用特定的水平alignment方式。

我环顾四周,发现以下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

我也在这里find了一个代码示例(虽然我没有自己testing):

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

我自己大部分时间都是使用Interop,并且在编写电子表格时知道我使用了单元格而不是列或行。

您应该可以创build单个样式,并在创build单元格时将其应用于单元格。

以下方法适用于我

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

参考

  1. 使用开放XML SDK所需的基本格式
  2. 使用C#中的openXML在Excel表格中着色单元格
  3. OpenXML电子表格中的单元格样式(SpreadsheetML)

你可以尝试这个有一个合并单元格,编辑高度和列和水平和垂直alignment中心

  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; 

尝试这个

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