2012-03-20 322 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;