excel - Julia Excel 对象

标签 excel object julia

MATLAB 有人可以通过创建 写入 excel 并格式化 excel 表。 Excel 对象 使用 actxserver 命令,然后使用类似 vba 的命令:https://www.mathworks.com/help/matlab/matlab_external/using-a-matlab-application-as-an-automation-client.html

是否 Julia 提供类似的功能?

最佳答案

有两种选择:

  • 使用 Julia 本地库 ( XLSX.jl ) <== 推荐
  • 通过 PyCall.jl 使用一些可用的 Python 库(也可以作为魅力) - 在这些选项中,类似 VBA 的命令选项也可用 - 请参阅本文末尾的代码

  • 广告1。

    编写电子表格
    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(A4, "", "", "0.15112461473849814", "")  Cell(B4, "", "", "0.9088105399888486", "")
     Cell(A5, "", "", "0.38606711950516326", "")  Cell(B5, "", "", "0.274487313772527", "")
     Cell(A6, "", "", "0.4390332370925689", "")   Cell(B6, "", "", "0.04038483579623442", "")
    

    一个 Cell对象有一个字段 value所以你可以进一步处理它。

    您也可以简单地询问任何单元格:
    julia> ws["A1"], ws["B1"]
    ("Data generated on:", DateTime("2020-06-13T18:42:18"))
    

    也许通常你会更喜欢高级DataFrames面向API:
    using XLSX
    using DataFrames
    df1 = DataFrame(a=1:3, b=6:8);
    df2 = DataFrame(x1=1:3, x2=string.('A':'C'));
    
    
    XLSX.writetable("myexcel.xlsx",
        MySheetName1=(collect(eachcol(df1)), names(df2)),
        MySheetName2=(collect(eachcol(df2)), names(df2)))
    

    广告 2。

    从安装 openpyxl 开始:
    using Conda
    Conda.add("openpyxl")
    

    然后任何 Python 示例都可以工作,例如:
    using PyCall
    xl = pyimport("openpyxl")
    
    wb = xl.Workbook();
    ws = wb.active
    
    ws["A1"] = "hello world"
    
    wb.save("yetanother.xlsx")
    

    最后但同样重要的是,您可以通过 ActiveX 自动化 Excel。对于大多数情况,我不推荐它(速度、非跨平台、需要安装 Office、需要桌面环境等),但这里是:
    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()
    

    关于excel - Julia Excel 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62361415/

    相关文章:

    vba - 从函数返回数组时类型不匹配

    java - 将多个对象写入和读取到文件

    java - 在另一个类中使用内部类actionListener

    Julia 报告一个额外的 ) 当它不存在时

    sharepoint - TFS2010 : Opening certain Excel reports gives error TF80076

    excel - cfSpreadsheet 2 位数年份

    parsing - 是否有将位串转换为整数的 Julia 函数?

    julia - 检查一个函数在 Julia 中是否有关键字参数

    vba - Excel VBA : Cannot delete multi columns by using if statement and for loop

    java - 根据对象中的变量对对象数组列表进行排序