我正在尝试创建一个 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中一个单元格的字体大小
在范围或单元格上使用 .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;
现在可以了。