2012-03-20 325 views
3

我有一个文档,我的asp.net页面正在创建,我需要将某些列的文本对齐到中心。在openXML SDK中手动将列置于中间位置后,我打开了文档,但反映的代码无法达到所需的结果。设置文本在C#中使用OpenXML在Excel文档中居中对齐

这是我如何设置这些列的定制宽度,我想加入到这个功能(方法,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

+0

显然,这不是那么简单。我无法改变我的方法来合并文本对齐。我必须通过StyleSheets。这很长,所以我可能会删除这个问题,除非有人想看到我的解决方案。 – broguyman 2012-03-20 16:39:30

回答

3

我认为这个问题是你试图样式列,当它是单个单元格需要格式化为以使用特定的水平对齐方式。

我环顾四周,发现下面的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,并且知道当我编写电子表格时,我使用单元格而不是列或行。

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

+0

这是我一起去的解决方案。我希望有一种方式来设计专栏,但我认为你不能。我知道你对单元格的设计是正确的,我认为这可能是绝对唯一的方式。 – broguyman 2012-03-20 18:53:54

+0

是啊,我没有注意到你对我的帖子的评论,直到我发布我的帖子。谢谢。 – Killnine 2012-03-20 19:37:38

+1

这个帮了我很多。谢谢 – 2017-05-31 07:20:25

-1

试试这个

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

我不知道它是否有效,但是,提问者已经告诉他他没有使用Interop Excel! – 2016-09-28 06:35:45

0

你可以试试这个有合并单元格,编辑高度和柱和水平对齐中心和垂直

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;