单元格样式对齐范围

ksc*_*eck 27 c# format excel alignment

我在excel表格中遇到问题.出于某种原因,当我只想更改指定范围或指定范围的样式时,我的代码似乎正在改变所有单元格的样式.

这是我正在使用的一些代码:

app = new Microsoft.Office.Interop.Excel.Application();
workbook = app.Workbooks.Add(1);
worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets[1];

//Change all cells' alignment to center
worksheet.Cells.Style.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;

//But then this line changes every cell style back to left alignment
worksheet.Cells[y + 1, x + 2].Style.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
Run Code Online (Sandbox Code Playgroud)

当我将它设置为仅在一个单元格上工作时,为什么它会改变多个单元格的样式?是不是应该按我想要的方式工作?还有另一种方法吗?

小智 24

这很好用

worksheet.get_Range("A1","A14").Cells.HorizontalAlignment = 
                 Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
Run Code Online (Sandbox Code Playgroud)


DGH*_*DGH 23

基于OP的这个评论,"我发现了问题.显然是工作表.细胞[y + 1,x + 1] .Horizo​​ntalAlignment",我相信真正的解释是所有细胞都开始共享同一个Style对象.因此,如果您更改该样式对象,它将更改使用它的所有单元格.但是,如果您只是直接更改单元格的对齐属性,则只会影响该单元格.

  • 是的哈哈,在写完之前不小心提交了评论.我猜我删除它的尝试失败了.`worksheet.get_Range("A1","A1").Style.Horizo​​ntalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;`将改变每个单元格的对齐方式.改变一个(或在一个范围内)使用`worksheet.Cells [y,x] .Horizo​​ntalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;` (11认同)

cra*_*aus 6

也许声明一个范围可能会更适合你.

// fill in the starting and ending range programmatically this is just an example. 
string startRange = "A1";
string endRange = "A1";
Excel.Range currentRange = (Excel.Range)excelWorksheet.get_Range(startRange , endRange );
currentRange.Style.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
Run Code Online (Sandbox Code Playgroud)