单元格样式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] .HorizontalAlignment”,我相信真正的解释是所有的单元格都开始共享相同的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;
直接在范围或单元格中修改样式对我不起作用。 但是这个想法是:
- 创build一个单独的风格
- 应用所有必要的样式属性值
- 将样式的名称设置为范围的
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;
这对我来说很好。