如何使用 Julia 创建具有多张工作表的 excel 文件?

Posted

技术标签:

【中文标题】如何使用 Julia 创建具有多张工作表的 excel 文件?【英文标题】:How to create an excel file with multiple sheets using Julia? 【发布时间】:2021-11-30 14:30:45 【问题描述】:

我正在 Julia 中编程并尝试创建一个包含多个工作表的 excel 文件以保存一些数据。问题是函数 XLSX.openxlsx() 只能用一张纸创建 excel。 我正在尝试运行以下代码。

XLSX.openxlsx("test_file.xlsx", mode="w") do xf
    sheet = xf[1]
    XLSX.rename!("first")
    sheet["A1"] = "A"
    sheet = xf[2]
    XLSX.rename!("second")
    sheet["A1"] = "B"
    sheet = xf[3]
    XLSX.rename!("third")
    sheet["A1"] = "C"
end

有谁知道如何创建包含多个工作表的 excel 文件?或者在现有文件中创建新工作表?

【问题讨论】:

【参考方案1】:

XLSX.addsheet! 就是你要找的东西。

XLSX.openxlsx("test_file.xlsx", mode="w") do xf
    XLSX.rename!(xf[1], "first")

    for sheetname in ["second", "third", "fourth"]
      XLSX.addsheet!(xf, sheetname)
    end

    xf[1]["A1"] = "A"
    xf[2]["A1"] = "B"
    xf[3]["A1"] = "C"

    # ...
end

【讨论】:

【参考方案2】:

writetable 接受多个工作表作为关键字参数。因此,我通常使用单行将所有数据框导出到 Excel 文件。我也绝对推荐创建一个DataFrame,对其进行操作,最后保存到Excel,因为DataFrames API 显然比XLSX API 更方便进行数据操作。

请看下面的代码:

using DataFrames, XLSX
df1 = DataFrame(a=1:5, b=string.("Hello",1:5), c=6.5:10.5)
df2 = DataFrame(a=1:5, d=[11,22,33,missing,missing] )

XLSX.writetable("dfs.xlsx", overwrite=true, 
    WORKSHEET_A=(collect(DataFrames.eachcol(df1)), DataFrames.names(df1)),
    WORKSHEET_B=(collect(DataFrames.eachcol(df2)), DataFrames.names(df2)),
    #add more data frames when needed   
)

【讨论】:

以上是关于如何使用 Julia 创建具有多张工作表的 excel 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 从 DataSet 创建包含多个工作表的 excel 文件

如何统计一个EXCEL工作薄内多张工作表的行数

使用 Jupyter notebook 将具有多个工作表的 Excel 文件转换为多个 csv 文件

bigQuery Google Drive 使用 googleSheetsOptions 范围查询多张工作表

在 Julia 中使用递归调用减少 JIT 时间

比较excel文件中多张工作表的列标题并将其提取到R