在MATLAB中,可以使用actxserver命令创建一个Excel对象,并使用类似于VBA的命令将数据写入Excel并格式化Excel表格。有关详细信息,请参见以下链接:https://www.mathworks.com/help/matlab/matlab_external/using-a-matlab-application-as-an-automation-client.html
请问JULIA是否提供类似的功能?
广告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()
XLSX.jl
有几种 XLSX.styles*
方法,这里是openpyxl的样式文档 https://openpyxl.readthedocs.io/en/stable/styles.html - Przemyslaw Szufel