将SUMPRODUCT Excel公式转换为C#

时间:2014-05-23 11:48:12

标签: c# excel

我是初学C#程序员,我发现自己在Windows Form应用程序中遇到问题,我正在使用Microsoft Visual C#2010 Express。我有一个按钮,打开文件对话框以选择特定的Excel工作簿,然后检索特定工作表的第一列和第f列的值。

我在Excel中完成了这个公式:

=SUMPRODUCT(('Worksheet1'!$A$2:$A$700<=99999)*('Worksheet1'!$A$2:$A$700>=90000))

我想在C#中使用这个公式。任何人都可以帮助我吗?

请注意,Worksheet的名称与文件名相同,因此我可以像这样获取Worksheet的名称:

string name = openFileDialog1.SafeFileName.Split(new Char[] { '.' })[0];

然后用:

打开它
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();

ExcelApp.Visible = true;

Microsoft.Office.Interop.Excel.Workbook wbook = ExcelApp.Workbooks.Open(openFileDialog1.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,) 
Microsoft.Office.Interop.Excel.Worksheet wsheet = (Microsoft.Office.Interop.Excel.Worksheet)wbook.Sheets[name];

你们能帮助我吗?希望你能。

非常感谢。

1 个答案:

答案 0 :(得分:3)

SUMPRODUCT具有两个相同大小的阵列的算法很容易......我的头脑:

float SumProduct(float[] arrayA, float[] arrayB)
{
   float result = 0;
   for(int i = 0; i < arrayA.Count(); i++)
      result += arrayA[i] * arrayB[i];
   return result;
}

这可以很容易地扩展为使用任意数量的数组(或使用与float不同的任何类型)。您必须检查两个阵列的大小是否相同。

相关问题