C#Excel范围管理

时间:2017-02-22 11:16:46

标签: c# excel excel-interop

我正在处理C#应用程序中的excel文件。

我想知道为什么这段代码不起作用:

var value1 = ws.Range[ws.Cells[7,4]].Value;

现在我发现这很好用:

int i = 7;
var value1 = ws.Range["D" + i.ToString()].Value;

4 个答案:

答案 0 :(得分:4)

由于您无法传递给Range()单个Cells()媒体资源,因此您需要使用Cells()的2个参数进行设置:

var value1 = ws.Range[ws.Cells[7,4],ws.Cells[7,4]].Value;

或(严格使用Cells属性):

var value1 =  ws.Cells[7,4].Value;

答案 1 :(得分:2)

ws.Range[]的第一个参数应为 A1风格的符号

访问

ws.Cells[7,4]

你可以试试这段代码:

var value1 = ws.Range["D7"].Value;

并查看this

答案 2 :(得分:1)

试试这个,我希望这会对你有所帮助

using Excel = Microsoft.Office.Interop.Excel;
var value1 =(ws.Cells[7, 4] as Excel.Range).Value;

答案 3 :(得分:1)

operator    Example
Range       A1:A1
Union       A1,A1
Intersect   A1 A1

这让我觉得理论上.Range应该需要2 Range个参数作为Application.UnionApplication.Intersect,但幸运的是它几乎接受任何可用的字符串表达式Excel地址栏。例如:

string address = ws.Range["offset(a1,1,2,3,4)"].Address[0, 0]; // "C2:F4"

此外,ws.Cells[7,4]Range,因此.Range(Range)没有多大意义。