C#.NET Interop Excel - 无法仅对齐特定列

问题描述 投票:0回答:1

我正在尝试创建一个 Excel 导出文件,我想将某些列水平居中对齐,其中一些列应右对齐。

但是,当我设置范围的 Style.HorizontalAlignment 时,即使我只选择特定单元格,它也会将所有单元格设置为该对齐方式。

这是我的代码:

var xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Add(Type.Missing);
Excel.Worksheet xlSheet = xlWorkbook.ActiveSheet;       
// Columns
xlSheet.Cells[1, 1] = "Column 1";
xlSheet.Cells[1, 2] = "Column 2";
xlSheet.Cells[1, 3] = "Column 3";
xlSheet.Cells[1, 4] = "Column 4";
xlSheet.Cells[1, 5] = "Column 5";
xlSheet.Cells[1, 6] = "Column 6";
xlSheet.Cells[1, 7] = "Column 7";
xlSheet.Cells[1, 8] = "Column 8";
// Header Row Format
var headerRow = xlSheet.Range["A1", "H1"];
headerRow.Font.Bold = true;
headerRow.Interior.Color = ColorTranslator.FromHtml("#e1e1e1");
// Column Alignments
((Excel.Style)xlSheet.Cells[1, 5].Style).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
((Excel.Style)xlSheet.Cells[1, 6].Style).HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
((Excel.Style)xlSheet.Cells[1, 7].Style).HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
((Excel.Style)xlSheet.Cells[1, 8].Style).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;

我也尝试过这个:

(xlSheet.Range["A1", "A1"].EntireColumn.Style as Excel.Style).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;

但它仍然设置所有单元格,而不是仅设置整个“A”列。

我正在使用 Microsoft COM 库:

using Excel = Microsoft.Office.Interop.Excel;

我在这里缺少什么?我还尝试使用不同的方法来设置列的范围对齐方式,但没有机会,每次我设置对齐方式时,它都会为所有单元格设置它。

在我上面的代码中,最后设置的对齐选项获胜,因此如果最后一个设置是 Excel.XlHAlign.xlHAlignLeft,则所有单元格都将向左对齐。

我不确定,但这可能与UsedRange有关吗?

如有任何帮助,我们将不胜感激。

谢谢

c# excel excel-interop
1个回答
0
投票

好吧,现在我通过以下线程找到了解决方案: 使用C#更改Excel中一个单元格的字体大小

在范围或单元格上使用 .Style 似乎会影响 Excel 工作表中的所有单元格。

因此我必须使用以下不带 .Style 属性的语法:

xlSheet.Range["A1"].Cells.EntireColumn.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
xlSheet.Range["B1"].Cells.EntireColumn.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;

或更简单:

xlSheet.Columns["A"].HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
xlSheet.Columns["B"].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;

现在可以了。

© www.soinside.com 2019 - 2024. All rights reserved.