用作从代码调用的计算引擎的Microsoft Excel电子表格

我有一个MS Excel电子表格,做一些复杂的计算。 我想创build一个脚本,将创build一个CSV文件与电子表格中获得的结果。

我可以使用我的编程语言重写电子表格中的逻辑(例如Ruby,但我打算使用不同的语言),但是当有人更改电子表格中的逻辑时,我将不得不更新我的代码。 是否有可能使用MS Excel电子表格作为黑盒,一个计算引擎,可以从我的代码中调用? 然后,我只能写我的代码中的CSV部分和input数据下载,整个计算逻辑可以留在电子表格中,可以很容易地更新。

理想情况下,我不想将任何CSV生成或数据下载代码添加到电子表格,因为它是由域专家(而不是程序员)使用的。 此外,我必须从互联网下载一些数据,并将其作为input值传递给电子表格。 我想在Git之类的版本控制系统中保留这部分代码。 另外需要注意的是电子表格使用Solver Excel插件。

任何帮助如何做到这一点将非常感激。

谢谢,米歇尔

要使用Ruby来操作Excel电子表格,您可能需要使用win32ole

这是一个示例脚本:

data = [["Hello", "World"]] # Require the WIN32OLE library require 'win32ole' # Create an instance of the Excel application object xl = WIN32OLE.new('Excel.Application') # Make Excel visible xl.Visible = 1 # Add a new Workbook object wb = xl.Workbooks.Add # Get the first Worksheet ws = wb.Worksheets(1) # Set the name of the worksheet tab ws.Name = 'Sample Worksheet' # For each row in the data set data.each_with_index do |row, r| # For each field in the row row.each_with_index do |field, c| # Write the data to the Worksheet ws.Cells(r+1, c+1).Value = field.to_s end end # Save the workbook wb.SaveAs('workbook.xls') # Close the workbook wb.Close # Quit Excel xl.Quit 

要编制更复杂的代码,只需logging一下你想要做什么的macros,然后看看你的macros的代码,并将其从VB转换到Ruby。