Free Support Forum - aspose.com

Aspose.cells for net IRR计算问题

在测试Aspose.cells 的过程中,使用IRR计算内部收益率时,发现了有一组数据在Excel2016中可以正确算出结果,而在Aspose中为#NUM!,这组数据是这样的:{-211030557.3,-266410271.8,-266410271.8,-34492567.96,-1270314.464,-1270314.464,-56719475.58,-11332216.14,-14568665.59,9905653.288,68511395.74,90404807.71,113434356.8,51264503.08,103961533.6,96827882.3,129465580.8,133449059.7,125152736.7,111266043,99157574.89,68453297.87,9291641.541,-2360636.855,-13401423.3,-23749074.52,-9054058.407,-10142058.66,-36137352.56,-9380853.492,-2449708.353,-2449708.353,-372976.4904,-372976.4904,-372976.4904,29888566.46,8297305.825,48506652.65,33500101.57,18680354.04,11208212.42,7409873.768,0,0,0,0,0,0,-22540262.57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
后来有做了一些测试,发现有更多的数据是在Excel2016中可以正常计算,而在Aspose中无法得到计算结果,测试数据如下:
{-1204,-674,-147,40,547,26,1499,550,-858,-754,-975}
{998,-486,-572,-8,765,-794,1033,392,91,-615,804}
{957,-609,-418,413,855,-865,1249,-454,719,-901,946}

这导致Aspose中的结果和Excel中的表现不一致,无法得到客户的认可,希望可以得到帮助,谢谢!

@ivanhu2013,
请您分享可运行的代码和模板文件以进行我们的测试。 我们将重现该问题,并在分析后提供反馈。

@ivanhu2013,

经过进一步评估,我们发现对于第一个数据集{-211030557.3,-266410271.8,…,MS Excel可以提供值。我们使用Aspose.Cells API进行了测试,并发现了问题。请参见带有附件的以下示例代码:
例如
样例代码:

Workbook workbook = new Workbook("e:\\test2\\irr_calculation1.xlsx");
            Worksheet sheet = workbook.Worksheets[0];
            MessageBox.Show(sheet.Cells["A1"].StringValue);//61%
            MessageBox.Show(sheet.Cells["B2"].StringValue);//#NUM!
            workbook.CalculateFormula();
            MessageBox.Show(sheet.Cells["A1"].StringValue);//#NUM! - Not Ok
            MessageBox.Show(sheet.Cells["B2"].StringValue);//#NUM!

我们将尽快对此进行进一步的研究。
irr_calculation.zip (6.0 KB)

但是,对于其他数据集,我们发现MS Excel给了我们“ #NUM!”。太。例如,我们在MS Excel中输入以下公式:= IRR({998,-486,-572,-8,765,-794,1033,392,91,-615,804}),计算的值为“ #NUM!”。太。因此,这不是API问题。

非常感谢你的回复,我还用了文件中的数据,也是计算有问题的,提供参考,希望你们可以尽快可以解决,比较着急,谢谢!
Test(2).zip (11.0 KB)

@ivanhu2013,

感谢您的模板文件。

我使用以下示例代码进行了测试,并发现了B7:B13和B17单元的问题。这些单元格中的IRR公式计算不正确,它给出“ #NUM!”而不是有效值。此外,我通过手动将文件打开到MS Excel中(并通过将“自动”指定为“计算选项”)来测试文件,并注意到应该对这些单元格进行计算以提供某些值而不是“ #NUM!”。另请参阅所附的屏幕截图。
例如
样例代码:

Workbook workbook = new Workbook("e:\\test2\\Test(2).xlsx");
                Worksheet sheet = workbook.Worksheets[0];
                for (int i = 1; i<17;i++)
                {
                    MessageBox.Show("B" + (i+1) + ":" + sheet.Cells["B" + (i+1)].StringValue);
                
                }
                workbook.CalculateFormula();
                for (int i = 1; i < 17; i++)
                {
                    MessageBox.Show("B" + (i + 1) + ":" + sheet.Cells["B" + (i + 1)].StringValue);

                }

我已经用现有票据记录了您的文件,我们将尽快对其进行调查,以彻底,准确地找出有关IRR计算的问题。

@ivanhu2013,
对于您的模板文件Test(2).xlsx,ms excel会将这些公式计算为附加的屏幕快照(Test(2)png)。 因此,随着即将到来的修复,我们将使计算结果与屏幕截图相同。
Test(2).png (4.5 KB)

@ivanhu2013,

请尝试使用我们的最新版本/修复程序:.NET v20.9.7的Aspose.Cells(随附):

您的问题应该已解决。

让我们知道您的反馈。
Aspose.Cells20.9.7 For .Net2_AuthenticodeSigned.Zip (5.4 MB)
Aspose.Cells20.9.7 For .Net4.0.Zip (5.4 MB)
Aspose.Cells20.9.7 For .NetStandard20.Zip (5.4 MB)

非常感谢,我们尽快展开新的测试,之后再反馈。

@Amjad_Sahi,
非常感谢,经过我们测试,新的版本已经解决了我们的问题。 我们也已经决定要购买这个产品。

@ivanhu2013,

感谢您考虑Aspose。

很高兴知道您的问题已由新修复程序解决。如有其他疑问或问题,请随时给我们回信,我们将竭诚为您服务。