Microsoft.Office.Interop.Excel.Worksheet.Cells[x,y].Style?

4
我发现一些代码使用了Microsoft.Office.Interop.Excel.Worksheet.Cells[x,y]的Style属性,但在我的Visual Studio代码编辑器中将其视为对象:
Workbook wb = new Application.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Worksheet ws = wb.Sheets[1];
ws.Cells[x,y] is simply treated as an object so how can I use its Style property?

我正在使用Microsoft Excel 15.0对象库(与Microsoft Office 2013一起使用)。这会有影响吗?

请问您能否向我解释一下这个问题?谢谢。


也许那段代码正在使用 dynamic - CodesInChaos
听起来很有趣,请给我一些关于“动态”的例子(或链接),谢谢。 - King King
Google C# 4 dynamic - CodesInChaos
@CodesInChaos 谢谢,你的链接提醒我要多搜索一下,但有时候我想直接在这里问,因为我懒得去深入了解新东西。还有很多 C# 3.5 的特性我还没有体验过。谢谢! - King King
2个回答

8

您需要将对象转换为Range

Range接口/对象包含您指定的单元格或范围的所有样式和值信息。

一些示例:

((Excel.Range)ws.Cells[r, c]).NumberFormat = format;
((Excel.Range)ws.Cells[r, c]).Value2 = cellVal;
((Excel.Range)ws.Cells[r, c]).Interior.Color = ColorTranslator.ToOle(Color.Red);
((Excel.Range)ws.Cells[r, c]).Style.Name = "Normal"

等等其他内容,等等。

这里有一个链接:https://learn.microsoft.com/en-us/office/vba/api/Excel.Range.Style


或者,如果您不打算更改位置,可以首先将结果分配给一个范围对象。Range neededRange = ws.Cells[r,c]; 然后使用范围方法。这使代码读起来更加清晰,并且这也是我编写Excel报告的方式。 - Chris
是的,我从一个接口中获取了这些示例,其中r、c和一些其他参数(取决于函数)是从另一个引擎传递进来的。因此,每行代码都在不同的函数中 :-). 如果您要在丢弃或重新分配之前多次重复使用相同的范围,则将其强制转换为范围并将其分配给自己的范围变量是很好的选择。 - Nevyn
谢谢,我尝试在Microsoft.Office.Interop.Excel命名空间中查找单元格类型,但是它不存在。也许Range不仅适用于一组单元格,还适用于特定的单元格。但是你知道为什么有些互联网上的代码可以直接访问Cell[x,y]上的Style,就好像它是Range类型而无需先进行转换一样吗?感谢您的帮助。 - King King
CodesInChaos称之为“动态”变量。这是我能想到的唯一原因,他们不需要在访问非常明显的Range属性之前特别地强制转换回范围。 - Nevyn
谢谢,这正是仅在Visual 2010或更高版本中使用的动态样式,但我正在Visual 2008中测试代码,尽管我的笔记本电脑安装了Visual 2010 Ultimate和Visual 2012。 - King King

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接