你能否从Excel宏运行一个.jl文件?

3

我正在尝试执行输出信息到文本文件的Julia代码。我需要为不了解Julia的用户提供准确的答案。我能否构建一个运行在我的计算机上的Excel宏来运行.Jl文件?

提前感谢您。

1个回答

1

曾经有一款商业 Julia Excel 插件叫做 JuliaInXL,但很可能已经停止更新。

你可以使用 Julia 编程来对 Excel 进行编程操作。

XLSX.jl

编写电子表格
using XLSX
using Dates
XLSX.openxlsx("smyample.xlsx", mode="w") do xf
    sheet = xf[1]
    XLSX.rename!(sheet, "NewSheetName")
    sheet["A1"] = "Data generated on:"
    sheet["B1"] =  Dates.now()
    dat = rand(4, 5)
    for i in 1:size(dat,1), j in 1:size(dat,2)
        XLSX.setdata!(sheet, XLSX.CellRef(2+i, j), dat[i,j])
    end
end

读取电子表格:
julia> wb = XLSX.readxlsx("mysample.xlsx")
XLSXFile("sample2.xlsx") containing 1 Worksheet
            sheetname size          range
-------------------------------------------------
         NewSheetName 6x5           A1:E6

让我们获取前两列:

julia> XLSX.getcellrange(ws, ws.dimension)[:,1:2]
6×2 Array{XLSX.AbstractCell,2}:
 Cell(A1, "s", "", "0", "")                   Cell(B1, "", "1", "43995.77937614583", "")
 EmptyCell(A2)                                EmptyCell(B2)
 Cell(A3, "", "", "0.7723129181734945", "")   Cell(B3, "", "", "0.9539233196840988", "")
...

一个 Cell 对象有一个 value 字段,因此您可以进一步处理它。

您也可以直接请求任何单元格:

julia> ws["A1"], ws["B1"]
("Data generated on:", DateTime("2020-06-13T18:42:18"))

ActiveX自动化 - 这将使得从Julia调用Excel宏成为可能

通过这种方式,可以执行运行中的Excel电子表格上的任何操作 - 你只是让MS Excel机械自动化。

using Conda
Conda.add("pywin32")

using PyCall
pw = pyimport("win32com")
pwc = pyimport("win32com.client")
import win32com.client

xlApp = pwc.Dispatch("Excel.Application")
xlApp.Visible=1
workBook = xlApp.Workbooks.Open("C:\\temp\\MyTest.xlsx")
workBook.ActiveSheet.Cells(1, 1).Value = "hello world"
workBook.Close(SaveChanges=1) 
xlApp.Quit()

1
我理解 OP 正在寻找相反的方式:从 Excel 宏中调用 Julia。 - Antonello
是的,我在帖子开头写道,有一个名为JuliaInXL的Excel插件似乎已经停止更新了。目前,生成电子表格文件和自动化宏是唯一可能的解决方法。 - Przemyslaw Szufel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接