问题
I have a document that my asp.net page is creating and I need to align the text of certain columns to center. I have opened the document after manually center the columns in openXML SDK but the code that is reflected does not achieve the desired outcome.
This is how I am setting the custom widths of these columns and I would like to add to this function (method, whatevs) the capability to center the text:
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;
}
I'm open to another way but I think that the solution has got to be very simple I just can't seem to get it. If anyone can help that would be great.
NOTE: Please keep in mind that I am using OpenXML and will not be using Microsoft.Office.Interop.Excel
回答1:
I think the issue is that you are trying to style the column, when it is individual cells that need to be formatted to use a specific horizontal alignment.
I looked around and found the following MSDN documentation:
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
I also found a code example here (Though I didn't test it myself):
http://blogs.msdn.com/b/chrisquon/archive/2009/11/30/stylizing-your-excel-worksheets-with-open-xml-2-0.aspx
I use the Interop most of the time myself, and know that I styled cells and not columns or rows when I wrote up my spreadsheets.
You should be able to create a single style and just apply it a bunch of times to cells as you create them.
回答2:
you can try this to have a merged cell, edit height and columns and align center horizontally and vertically
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;
回答3:
Following approach works fine for me
//using OfficeOpenXml;
//using OfficeOpenXml.Style;
workSheet.Cells[rowIndex, 22].Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;
REFERENCES
- Required basic formatting using open XML SDK
- Coloring cells in excel sheet using openXML in C#
- Cell styles in OpenXML spreadsheet (SpreadsheetML)
回答4:
You can just select your cell and set text align:
ws.Cell("A1").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
ws is your worksheet:
XLWorkbook workbook = new XLWorkbook();
var ws = workbook.Worksheets.Add("Text align");
回答5:
Try this
workSheet_range.HorizontalAlignment =
Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
来源:https://stackoverflow.com/questions/9787669/set-text-align-to-center-in-an-excel-document-using-openxml-with-c-sharp