单元格样式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; 

为什么它会改变多个单元格的样式,当我把它设置为只在一个单元格上工作? 是不是应该如何工作? 有没有另外一种方法呢?

基于OP的这个评论,“我find了问题,显然是工作表。单元格[y + 1,x + 1] .Horizo​​ntalAlignment”,我相信真正的解释是所有的单元格都开始共享相同的Style对象。 所以如果你改变这个样式对象,它会改变所有使用它的单元格。 但是,如果您直接更改单元格的alignment属性,则只会影响该单元格。

这很好

 worksheet.get_Range("A1","A14").Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft; 

也许宣布一个范围可能会更好地锻炼你。

 // 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; 

直接在范围或单元格中修改样式对我不起作用。 但是这个想法是:

  1. 创build一个单独的风格
  2. 应用所有必要的样式属性值
  3. 将样式的名称设置为范围的Style属性

,在MSDN中给出如何:以编程方式将样式应用于工作簿中的范围完成了这项工作。

例如:

 var range = worksheet.Range[string.Format("A{0}:C{0}", rowIndex++)]; range.Merge(); range.Value = "some value"; var style = workbook.AddStyle(); style.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft; range.Style = style.Name; 
  ExcelApp.Sheets[1].Range[ExcelApp.Sheets[1].Cells[1, 1], ExcelApp.Sheets[1].Cells[70, 15]].Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; 

这对我来说很好。