用户选择行号和列号时计算Excel范围

时间:2012-06-15 05:14:51

标签: c# excel visual-studio-2010 interop

我在c#Form Application中有一个方法,在给定Range时从excel返回数据。

...
Microsoft.Office.Interop.Excel.Worksheet aWs = aWb.Worksheets[sheetName] as Microsoft.Office.Interop.Excel.Worksheet;

            Range headers = aWs.get_Range(range1, range2);

            object[,] values = headers.get_Value(hmissing) as object[,];
...

此处range1range2是单元格值。例如:A1,B7

我想在用户选择行号和列号时计算此range1range2

If user select  Rows ={All} and columns = {A,B,C} => result={A1,C265}
If user select  Rows ={1,2,3,4} and columns = {A,B,C} => result={A1,C4}
If user select  Rows ={1,2,4,5} and columns = {A,B,C} => result={A1,C2} {A4,C5}
If user select not matching rows and columns => result={null}

我该怎么做?我们可以实现一个方法,还是有Excel提供的API来执行此操作?

谢谢。

2 个答案:

答案 0 :(得分:1)

如果您要做的是重新计算公式,Excel有几种计算方法。
要计算特定范围,请使用Range.Calculate或Range.CalculateRowMajorOrder。
请注意,如果Excel处于自动计算模式,不应该被要求,因为所有公式都会根据需要自动重新计算。

答案 1 :(得分:0)

尝试使用LinqToexcel,它将帮助您解决此问题linqtoexcel

希望这会有所帮助