C# Excel 范围管理

C# Excel range management

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

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

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

现在我发现这工作正常:

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

因为您不能将单个 Cells() 属性 传递给 Range(),所以您需要使用 Cells() 的 2 个参数来设置它:

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

或(严格使用单元格属性):

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

试试这个,希望对你有帮助

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

ws.Range[]的第一个参数应该是A1-style notation

访问

ws.Cells[7,4]

你可以试试这个代码:

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

并查看 this

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

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

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

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