2017-08-08 113 views
0

我有一个xlsx单元格中的值,其中很多都是用其他单元格中的公式引用的(在同一张表中)。我正在与RubyXL工作,因为我没有找到另一个帮我编写,编辑和保存一个存在的xlsx文件的宝石。 现在要清楚,让我们看看我在做什么和我想要的例子。想象一组3个细胞; A1,B1和C1其中C1是A1和B1的总和(= A1 + B1),所以如果我们在A1中有4个,B1中有6个,那么C1等于10.我打开xlsx,使用workbook = RubyXL::Parser.parse('example.xlsx'),另外我将单元格A1的值从4修改为5并保存。这是问题所在,如果我们在改变之后读取单元格C1,我们仍然得到以前的结果10. 我如何更新该公式的协议? RubyXL有可能吗?还是有另一种解决方案?用RubyXL更新公式引用的单元格值

回答

0

最后我解决了这个问题。如果你对我感兴趣,我使用了win32ole,因为在测试了很多rubygems之后,这就是我在问题中所说的那种unic。

require 'win32ole' 

begin 
    xl = WIN32OLE.new('Excel.Application') 
    workbook = xl.Workbooks.Open('my_route') 
    worksheet = workbook.Worksheets(1) 
    # Here we make operations like this one... 
    worksheet.Cells(2,2).value = 2 
    # After any operations we can see the results of referenced cells inmediatly 
    # Save the file if you want 
    # workbook.Save 
    workbook.Close 
rescue => e 
    xl.Quit 
end 

因此,总结RubyXL工作正常,但不反映编辑文件时公式中引用的单元格的结果。 win32ole做到这一点。

0

RubyXL README这听起来像该实用程序旨在读取Excel文件,然后写出它们。然后,当您在Excel中打开文件时,您会看到您的更改和公式将被重新计算。

如果您想进行Excel的COM自动化,您可能需要查看win32ole

+0

我可以看到改变,当我打开文件后,我写它,但不是公式重新计算。 病态检查win32ole thx – Pistorius

+1

感谢提示汤姆,win32ole帮助我解决问题 – Pistorius

+0

很酷,我很高兴,帮助! –

相关问题