From ca57b4f1a7f65aa0942c4e9da296513366cb7ca2 Mon Sep 17 00:00:00 2001 From: nhz2 Date: Fri, 20 Mar 2026 22:31:30 -0400 Subject: [PATCH 1/2] Bake in relocatable data --- Artifacts.toml | 6 ------ Project.toml | 1 - artifacts_scripts/Project.toml | 4 ---- artifacts_scripts/build_artifacts.jl | 19 ------------------- src/XLSX.jl | 3 +-- {relocatable_data => src}/blank.xlsx | Bin src/formula.jl | 10 +++------- {relocatable_data => src}/metadata.xml | 0 src/read.jl | 14 +++++--------- {relocatable_data => src}/sheet_template.xml | 0 src/write.jl | 10 ++++++---- 11 files changed, 15 insertions(+), 52 deletions(-) delete mode 100644 Artifacts.toml delete mode 100644 artifacts_scripts/Project.toml delete mode 100644 artifacts_scripts/build_artifacts.jl rename {relocatable_data => src}/blank.xlsx (100%) rename {relocatable_data => src}/metadata.xml (100%) rename {relocatable_data => src}/sheet_template.xml (100%) diff --git a/Artifacts.toml b/Artifacts.toml deleted file mode 100644 index 9879e487..00000000 --- a/Artifacts.toml +++ /dev/null @@ -1,6 +0,0 @@ -[XLSX_relocatable_data] -git-tree-sha1 = "c0b84c4a80d13f58b3409f4a77d4a11455b5609e" - - [[XLSX_relocatable_data.download]] - sha256 = "badd217e2f89dea194e4bce0d23cc96f5c1ac146e247b7c465d79fa4557610ec" - url = "https://github.com/juliadata/XLSX.jl/releases/download/artifact-v0.8/xlsx_artifact_v0.8.2.tar.gz" diff --git a/Project.toml b/Project.toml index 9c864ef6..4f3f93fb 100644 --- a/Project.toml +++ b/Project.toml @@ -6,7 +6,6 @@ authors = ["Felipe Noronha "] repo = "https://github.com/juliadata/XLSX.jl.git" [deps] -Artifacts = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" Mmap = "a63ad114-7e13-5084-954f-fe012c677804" diff --git a/artifacts_scripts/Project.toml b/artifacts_scripts/Project.toml deleted file mode 100644 index 8248ecf1..00000000 --- a/artifacts_scripts/Project.toml +++ /dev/null @@ -1,4 +0,0 @@ -[deps] -ArtifactUtils = "8b73e784-e7d8-4ea5-973d-377fed4e3bce" -Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -Tar = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" diff --git a/artifacts_scripts/build_artifacts.jl b/artifacts_scripts/build_artifacts.jl deleted file mode 100644 index 567c2769..00000000 --- a/artifacts_scripts/build_artifacts.jl +++ /dev/null @@ -1,19 +0,0 @@ -using ArtifactUtils -using Pkg -using Pkg.PlatformEngines -using Tar - -artifact_content = joinpath(@__DIR__() |> dirname, "relocatable_data") -artifact_toml_path = joinpath(@__DIR__() |> dirname, "Artifacts.toml") -tar_path = joinpath(@__DIR__(), "xlsx_artifacts.tar.gz") - -@assert isdir(artifact_content) -package(artifact_content, tar_path) - -add_artifact!( - artifact_toml_path, - "XLSX_relocatable_data", - "https://www.dropbox.com/s/9rgm3pnd1dmzmy9/xlsx_artifacts.tar.gz?dl=1"; - force = true, - lazy = false -) \ No newline at end of file diff --git a/src/XLSX.jl b/src/XLSX.jl index 6b9afeb5..22bb4f70 100644 --- a/src/XLSX.jl +++ b/src/XLSX.jl @@ -1,7 +1,6 @@ module XLSX -import Artifacts import Base.convert import Base.Threads import Colors @@ -70,7 +69,7 @@ PCT.@setup_workload begin PCT.@compile_workload begin # all calls in this block will be precompiled, regardless of whether # they belong to your package or not (on Julia 1.8 and higher) - f=openxlsx(joinpath(_relocatable_data_path(), "blank.xlsx"), mode="rw") + f=openxlsx(joinpath(@__DIR__, "blank.xlsx"), mode="rw") f[1]["A1:Z26"] = "hello World" openxlsx(s, mode="w") do xf xf[1][1:26, 1:26] = pi diff --git a/relocatable_data/blank.xlsx b/src/blank.xlsx similarity index 100% rename from relocatable_data/blank.xlsx rename to src/blank.xlsx diff --git a/src/formula.jl b/src/formula.jl index b45171c6..f223f12c 100644 --- a/src/formula.jl +++ b/src/formula.jl @@ -1,8 +1,5 @@ -#---------------------------------------------------------------------------------------------------- -# metadata.xml should perhaps better be a package artifact. Put it here in the meantime. -const metadata = """ -""" -#----------------------------------------------------------------------------------------------------- +include_dependency(joinpath(@__DIR__, "metadata.xml")) +const METADATA_XML_DATA = read(joinpath(@__DIR__, "metadata.xml")) const RGX_FORMULA_SHEET_CELL = r"!\$?[A-Z]+\$?[0-9]" # to recognise sheetcell references like "otherSheet!A1" @@ -616,8 +613,7 @@ function process_dynamic_array_functions(xf::XLSXFile, cellref::CellRef, val::St ref = cellname(cellref) * ":" * cellname(cellref) cm = "1" if !haskey(xf.files, "xl/metadata.xml") # add metadata.xml on first use of a dynamicArray formula - # xf.data["xl/metadata.xml"] = XML.Node(XML.Raw(read(joinpath(_relocatable_data_path(), "metadata.xml")))) - xf.data["xl/metadata.xml"] = parse(metadata, XML.Node) + xf.data["xl/metadata.xml"] = XML.Node(XML.Raw(copy(METADATA_XML_DATA))) xf.files["xl/metadata.xml"] = true # set file as read add_override!(xf, "/xl/metadata.xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml") rId = add_relationship!(get_workbook(xf), "metadata.xml", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata") diff --git a/relocatable_data/metadata.xml b/src/metadata.xml similarity index 100% rename from relocatable_data/metadata.xml rename to src/metadata.xml diff --git a/src/read.jl b/src/read.jl index 4db1c6bb..42e60f0f 100644 --- a/src/read.jl +++ b/src/read.jl @@ -111,10 +111,6 @@ opentemplate(source::Union{AbstractString,IO})::XLSXFile = open_or_read_xlsx(sou @inline open_xlsx_template(source::Union{AbstractString,IO})::XLSXFile = open_or_read_xlsx(source, true, true, true) -function _relocatable_data_path(; path::AbstractString=Artifacts.artifact"XLSX_relocatable_data") - return path -end - """ newxlsx([sheetname::AbstractString]; update_timestamp::Bool) :: XLSXFile @@ -153,15 +149,15 @@ function fix_datestamp!(xf::XLSXFile) return nothing end +include_dependency(joinpath(@__DIR__, "blank.xlsx")) +const BLANK_XLSX_DATA = read(joinpath(@__DIR__, "blank.xlsx")) + function open_empty_template( sheetname::AbstractString=""; - path::AbstractString=_relocatable_data_path(), + empty_template_data::Vector{UInt8}=BLANK_XLSX_DATA, update_timestamp::Bool=true )::XLSXFile - - empty_excel_template = joinpath(path, "blank.xlsx") - !isfile(empty_excel_template) && throw(XLSXError("Couldn't find template file $empty_excel_template.")) - xf = open_xlsx_template(empty_excel_template) + xf = open_xlsx_template(IOBuffer(empty_template_data)) xf[1].cache.is_full = true if sheetname != "" diff --git a/relocatable_data/sheet_template.xml b/src/sheet_template.xml similarity index 100% rename from relocatable_data/sheet_template.xml rename to src/sheet_template.xml diff --git a/src/write.jl b/src/write.jl index 9b393acb..e24e0ebb 100644 --- a/src/write.jl +++ b/src/write.jl @@ -1110,6 +1110,9 @@ function renamesheet!(ws::Worksheet, name::AbstractString) nothing end +include_dependency(joinpath(@__DIR__, "sheet_template.xml")) +const SHEET_TEMPLATE_XML_DATA = read(joinpath(@__DIR__, "sheet_template.xml")) + """ addsheet!(wb::Workbook, [name::AbstractString=""]) --> ::Worksheet addsheet!(xf::XLSXFile, [name::AbstractString=""]) --> ::Worksheet @@ -1121,10 +1124,9 @@ See also [renamesheet!](@ref), [copysheet!](@ref), [deletesheet!](@ref) """ addsheet!(xl::XLSXFile, name::AbstractString="")::Worksheet = addsheet!(get_workbook(xl), name)::Worksheet -function addsheet!(wb::Workbook, name::AbstractString=""; relocatable_data_path::String=_relocatable_data_path())::Worksheet - file_sheet_template = joinpath(relocatable_data_path, "sheet_template.xml") - !isfile(file_sheet_template) && throw(XLSXError("Couldn't find template file $file_sheet_template.")) - bytes = read(file_sheet_template) +function addsheet!(wb::Workbook, name::AbstractString=""; sheet_template_data::Vector{UInt8}=SHEET_TEMPLATE_XML_DATA)::Worksheet + # Copy so the global SHEET_TEMPLATE_DATA isn't accidentally changed + bytes = copy(sheet_template_data) f, _ = skipNode(XML.Raw(bytes), "sheetData") xdoc = XML.Node(XML.Raw(f)) From bb085e4ecbe3507daaab6b7faa5d4266a1ae688d Mon Sep 17 00:00:00 2001 From: nhz2 Date: Sat, 21 Mar 2026 15:12:08 -0400 Subject: [PATCH 2/2] add git attributes and remove duplicate files --- .gitattributes | 3 +++ data/sheet_template.xml | 2 -- src/XLSX.jl | 2 +- src/blank.xlsx | Bin 6455 -> 0 bytes {data => src/data}/blank.xlsx | Bin src/{ => data}/metadata.xml | 0 src/{ => data}/sheet_template.xml | 0 src/formula.jl | 4 ++-- src/read.jl | 4 ++-- src/write.jl | 4 ++-- test/runtests.jl | 10 +++++++--- 11 files changed, 17 insertions(+), 12 deletions(-) create mode 100644 .gitattributes delete mode 100644 data/sheet_template.xml delete mode 100644 src/blank.xlsx rename {data => src/data}/blank.xlsx (100%) rename src/{ => data}/metadata.xml (100%) rename src/{ => data}/sheet_template.xml (100%) diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..314766e9 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +* text=auto eol=lf +*.{cmd,[cC][mM][dD]} text eol=crlf +*.{bat,[bB][aA][tT]} text eol=crlf diff --git a/data/sheet_template.xml b/data/sheet_template.xml deleted file mode 100644 index 29387f55..00000000 --- a/data/sheet_template.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/src/XLSX.jl b/src/XLSX.jl index 22bb4f70..799c45ab 100644 --- a/src/XLSX.jl +++ b/src/XLSX.jl @@ -69,7 +69,7 @@ PCT.@setup_workload begin PCT.@compile_workload begin # all calls in this block will be precompiled, regardless of whether # they belong to your package or not (on Julia 1.8 and higher) - f=openxlsx(joinpath(@__DIR__, "blank.xlsx"), mode="rw") + f=openxlsx(joinpath(@__DIR__, "data", "blank.xlsx"), mode="rw") f[1]["A1:Z26"] = "hello World" openxlsx(s, mode="w") do xf xf[1][1:26, 1:26] = pi diff --git a/src/blank.xlsx b/src/blank.xlsx deleted file mode 100644 index 62e1484a98232f2ffb49e3a6a1d8983c2a3405dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6455 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 diff --git a/data/blank.xlsx b/src/data/blank.xlsx similarity index 100% rename from data/blank.xlsx rename to src/data/blank.xlsx diff --git a/src/metadata.xml b/src/data/metadata.xml similarity index 100% rename from src/metadata.xml rename to src/data/metadata.xml diff --git a/src/sheet_template.xml b/src/data/sheet_template.xml similarity index 100% rename from src/sheet_template.xml rename to src/data/sheet_template.xml diff --git a/src/formula.jl b/src/formula.jl index f223f12c..c633cb6f 100644 --- a/src/formula.jl +++ b/src/formula.jl @@ -1,5 +1,5 @@ -include_dependency(joinpath(@__DIR__, "metadata.xml")) -const METADATA_XML_DATA = read(joinpath(@__DIR__, "metadata.xml")) +include_dependency(joinpath(@__DIR__, "data", "metadata.xml")) +const METADATA_XML_DATA = read(joinpath(@__DIR__, "data", "metadata.xml")) const RGX_FORMULA_SHEET_CELL = r"!\$?[A-Z]+\$?[0-9]" # to recognise sheetcell references like "otherSheet!A1" diff --git a/src/read.jl b/src/read.jl index 42e60f0f..4cc7e5d1 100644 --- a/src/read.jl +++ b/src/read.jl @@ -149,8 +149,8 @@ function fix_datestamp!(xf::XLSXFile) return nothing end -include_dependency(joinpath(@__DIR__, "blank.xlsx")) -const BLANK_XLSX_DATA = read(joinpath(@__DIR__, "blank.xlsx")) +include_dependency(joinpath(@__DIR__, "data", "blank.xlsx")) +const BLANK_XLSX_DATA = read(joinpath(@__DIR__, "data", "blank.xlsx")) function open_empty_template( sheetname::AbstractString=""; diff --git a/src/write.jl b/src/write.jl index e24e0ebb..41fd6454 100644 --- a/src/write.jl +++ b/src/write.jl @@ -1110,8 +1110,8 @@ function renamesheet!(ws::Worksheet, name::AbstractString) nothing end -include_dependency(joinpath(@__DIR__, "sheet_template.xml")) -const SHEET_TEMPLATE_XML_DATA = read(joinpath(@__DIR__, "sheet_template.xml")) +include_dependency(joinpath(@__DIR__, "data", "sheet_template.xml")) +const SHEET_TEMPLATE_XML_DATA = read(joinpath(@__DIR__, "data", "sheet_template.xml")) """ addsheet!(wb::Workbook, [name::AbstractString=""]) --> ::Worksheet diff --git a/test/runtests.jl b/test/runtests.jl index 523330ca..e7485142 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -12,6 +12,10 @@ data_directory = joinpath(dirname(pathof(XLSX)), "..", "data") @assert isdir(data_directory) +src_data_directory = joinpath(dirname(pathof(XLSX)), "data") + +@assert isdir(src_data_directory) + @testset "read test files" begin ef_blank_ptbr_1904 = XLSX.readxlsx(joinpath(data_directory, "blank_ptbr_1904.xlsx")) ef_Book1 = XLSX.readxlsx(joinpath(data_directory, "Book1.xlsx")) @@ -74,9 +78,9 @@ data_directory = joinpath(dirname(pathof(XLSX)), "..", "data") end @testset "Read invalid XLSX error" begin - @test_throws XLSX.XLSXError XLSX.readxlsx(joinpath(data_directory, "sheet_template.xml")) + @test_throws XLSX.XLSXError XLSX.readxlsx(joinpath(src_data_directory, "sheet_template.xml")) try - XLSX.readxlsx(joinpath(data_directory, "sheet_template.xml")) + XLSX.readxlsx(joinpath(src_data_directory, "sheet_template.xml")) @test false # didn't throw exception catch e @test occursin("is not a valid XLSX file", "$e") @@ -6545,7 +6549,7 @@ end @testset "show xlsx" begin @testset "single sheet" begin - xf = XLSX.readxlsx(joinpath(data_directory, "blank.xlsx")) + xf = XLSX.readxlsx(joinpath(src_data_directory, "blank.xlsx")) show(IOBuffer(), xf) end