代码如下,两个对应的list集合,带入aspose中,用公式算出XIRR数据,大多数都是可以算出来,也可以读取出来,只有一条数据,随便造的数据有问题,读取不出来,
A B C
33333.33 2017/02/01 -0.9702
33851.85 2017/03/01
33620.37 2017/03/01
10000 2017/03/01
-100000 2017/03/04
如上数据,直接保存的EXCEL中也是有值的,就是worksheet.Cells["C1"].DoubleValue;获取不到值,这是为什么呢,有没有大神解读下,上面注释代码为测试代码直接读取也是不行的。
public static double XIRR(IList values, IList dates)
{ //Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook("G:\ceshi.xlsx");
////workbook.("G:\ceshi.xlsx");
//Cells cells = workbook.Worksheets[0].Cells;
//string str1 = cells["A1"].StringValue;
//string str2 = cells["C1"].StringValue;
int count = values.Count;
Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();
Aspose.Cells.Worksheet worksheet = workbook.Worksheets[0];
for (int i = 0; i < count; i++)
{
worksheet.Cells[string.Format("A{0}", (i + 1))].PutValue(values[i]);
worksheet.Cells[string.Format("B{0}", (i + 1))].PutValue(dates[i].ToString("yyyy/MM/dd"));
}
worksheet.Cells["C1"].Formula = string.Format("=ROUND(XIRR(A1:A{0}, B1:B{1}),4)", count, count);
workbook.CalculateFormula();
//workbook.Save("G://ceshi.xlsx");
return worksheet.Cells["C1"].DoubleValue;
}