首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RubyXL更新公式引用的单元格值

使用RubyXL更新公式引用的单元格值
EN

Stack Overflow用户
提问于 2017-08-08 22:40:47
回答 3查看 1.8K关注 0票数 1

我有一个在单元格中有值的xlsx,其中许多被其他单元格中的公式引用(在同一张工作表中)。我正在使用RubyXL,因为我找不到另一个可以帮助我编写、编辑和保存现有xlsx文件的gem。现在为了清楚起见,让我们看一个我正在做什么和我想要什么的例子。假设有3个单元格: A1,B1和C1,其中C1是A1和B1 (=A1+B1)的总和,所以如果我们在A1中有4,在B1中有6,那么C1等于10。我用workbook = RubyXL::Parser.parse('example.xlsx')打开xlsx,然后我将单元格A1的值从4修改为5并保存它。这就是问题所在,如果我们在更改后读取单元格C1,我们仍然会得到之前的结果10。我如何才能根据公式更新它?与RubyXL是可能的吗?还是有其他的解决方案?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-09 23:19:20

最后我解决了这个问题。如果你感兴趣,我使用win32ole是因为在测试了很多rubygem之后,这就是unic,它的工作方式和我在问题中所说的一样。

代码语言:javascript
复制
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就是这么做的。

票数 1
EN

Stack Overflow用户

发布于 2019-09-04 19:26:14

公认的答案的问题是,在服务器上,office通常没有安装,因此COM自动化在那里不起作用。使用以下代码时,当Excel打开电子表格时,将重新计算公式。

代码语言:javascript
复制
workbook = RubyXL::Parser.parse(file)
workbook.calc_pr.full_calc_on_load = true
票数 3
EN

Stack Overflow用户

发布于 2017-08-09 01:28:41

RubyXL README上看,该实用程序的目的是读取Excel文件,然后将它们写回。然后,当您在Excel中打开该文件时,您将看到所做的更改,公式将重新计算。

如果你想对win32ole进行COM自动化,你可能会想看看Excel.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45571349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档