使用带有C#的OpenXML在Excel文档中设置文本居中对齐
本文关键字:文档 置文本 对齐 Excel OpenXML | 更新日期: 2023-09-27 18:28:35
我的asp.net页面正在创建一个文档,我需要将某些列的文本居中对齐。我在openXMLSDK中手动居中列后打开了文档,但所反映的代码没有达到预期的结果。
这就是我设置这些列的自定义宽度的方式,我想向这个函数(方法,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
我认为问题是,当单个单元格需要格式化以使用特定的水平对齐方式时,您正在尝试为列设置样式。
我环顾四周,发现了以下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;
参考
- 使用开放式XML SDK所需的基本格式
- 在C#中使用openXML为excel表中的单元格着色
- 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;
如果您正在研究如何在excel单元格中对齐文本,则需要在cellFormat对象上应用对齐
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;
你可以在微软文档中阅读更多
https://learn.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.cellformat.alignment?view=openxml-2.8.1
您只需选择单元格并设置文本对齐即可:
ws.Cell("A1").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
ws是您的工作表:
XLWorkbook workbook = new XLWorkbook();
var ws = workbook.Worksheets.Add("Text align");
试试这个
workSheet_range.HorizontalAlignment =
Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;