< Summary

Information
Class: src/workbook.jl
Assembly: Default
File(s): src/workbook.jl
Tag: 40_3060321334
Line coverage
65%
Covered lines: 42
Uncovered lines: 22
Coverable lines: 64
Total lines: 121
Line coverage: 65.6%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Method coverage is only available for sponsors.

Upgrade to PRO version

File(s)

src/workbook.jl

#LineLine coverage
 1
 2"""
 3    JSONWorkbook(file::AbstractString; start_line = 1)
 4
 5`start_line` of each sheets are considered as JSONPointer for data structure.
 6And each sheets are pared to `Array{PointerDict, 1}`
 7
 8# Constructors
 9```julia
 10JSONWorkbook("Example.xlsx")
 11```
 12
 13# Arguments
 14arguments are applied to all Worksheets within Workbook.
 15
 16- `row_oriented` : if 'true'(the default) it will look for colum names in '1:1', if `false` it will look for colum names
 17- `start_line` : starting index of position of columnname.
 18- `squeeze` : squeezes all rows of Worksheet to a singe row.
 19- `delim` : a String or Regrex that of deliminator for converting single cell to array.
 20
 21"""
 22mutable struct JSONWorkbook
 623    xlsxpath::AbstractString
 24    sheets::Vector{JSONWorksheet}
 25    sheetindex::Index
 26end
 27
 628function JSONWorkbook(xf::XLSX.XLSXFile, v::Vector{JSONWorksheet})
 1229    wsnames = sheetnames.(v)
 630    index = Index(wsnames)
 631    JSONWorkbook(xf.filepath, v, index)
 32end
 33# same kwargs for all sheets
 1834function JSONWorkbook(xf::XLSX.XLSXFile, sheets = XLSX.sheetnames(xf); kwargs...)
 1835    v = Array{JSONWorksheet, 1}(undef, length(sheets))
 1236    @inbounds for (i, s) in enumerate(sheets)
 4837        v[i] = JSONWorksheet(xf, s; kwargs...)
 38    end
 639    close(xf)
 40
 641    JSONWorkbook(xf, v)
 42end
 43# Different Kwargs per sheet
 044function JSONWorkbook(xlsxpath::AbstractString, sheets, kwargs_per_sheet::Dict)
 045    xf = XLSX.readxlsx(xlsxpath)
 46
 047    v = Array{JSONWorksheet, 1}(undef, length(sheets))
 048    @inbounds for (i, s) in enumerate(sheets)
 049        v[i] = JSONWorksheet(xf, s; kwargs_per_sheet[s]...)
 50    end
 051    close(xf)
 52
 053    JSONWorkbook(xf, v)
 54end
 055function JSONWorkbook(xlsxpath, sheets; kwargs...)
 056    xf = XLSX.readxlsx(xlsxpath)
 057    JSONWorkbook(xf, sheets; kwargs...)
 58end
 1259function JSONWorkbook(xlsxpath; kwargs...)
 1260    xf = XLSX.readxlsx(xlsxpath)
 661    JSONWorkbook(xf; kwargs...)
 62end
 63
 64# JSONWorkbook fallback functions
 265hassheet(jwb::JSONWorkbook, s::AbstractString) = haskey(jwb.sheetindex, s)
 266hassheet(jwb::JSONWorkbook, s::Symbol) = haskey(jwb.sheetindex, string(s))
 767sheetnames(jwb::JSONWorkbook) = names(jwb.sheetindex)
 168xlsxpath(jwb::JSONWorkbook) = jwb.xlsxpath
 69
 5470getsheet(jwb::JSONWorkbook, i) = jwb.sheets[i]
 3971getsheet(jwb::JSONWorkbook, s::AbstractString) = getsheet(jwb, jwb.sheetindex[s])
 172getsheet(jwb::JSONWorkbook, s::Symbol) = getsheet(jwb, jwb.sheetindex[string(s)])
 173Base.getindex(jwb::JSONWorkbook, i::UnitRange) = getsheet(jwb, i)
 1474Base.getindex(jwb::JSONWorkbook, i::Integer) = getsheet(jwb, i)
 2975Base.getindex(jwb::JSONWorkbook, s::AbstractString) = getsheet(jwb, s)
 1076Base.getindex(jwb::JSONWorkbook, s::Symbol) = getsheet(jwb, string(s))
 77
 1078Base.length(jwb::JSONWorkbook) = length(jwb.sheets)
 179Base.lastindex(jwb::JSONWorkbook) = length(jwb.sheets)
 80
 081Base.setindex!(jwb::JSONWorkbook, jws::JSONWorksheet, i1::Int) = setindex!(jwb.sheets, jws, i1)
 182Base.setindex!(jwb::JSONWorkbook, jws::JSONWorksheet, s::Symbol) = setindex!(jwb, jws, string(s))
 183Base.setindex!(jwb::JSONWorkbook, jws::JSONWorksheet, s::AbstractString) = setindex!(jwb.sheets, jws, jwb.sheetindex[s])
 84
 285function Base.deleteat!(jwb::JSONWorkbook, i::Integer)
 286    deleteat!(getfield(jwb, :sheets), i)
 487    s = sheetnames.(getfield(jwb, :sheets))
 288    setfield!(jwb, :sheetindex, Index(s))
 289    jwb
 90end
 191Base.deleteat!(jwb::JSONWorkbook, sheet::Symbol) = deleteat!(jwb, string(sheet))
 192function Base.deleteat!(jwb::JSONWorkbook, sheet::AbstractString)
 293    i = getfield(jwb, :sheetindex)[sheet]
 194    deleteat!(jwb, i)
 95end
 96
 297Base.iterate(jwb::JSONWorkbook) = iterate(jwb, 1)
 798function Base.iterate(jwb::JSONWorkbook, st)
 799    st > length(jwb) && return nothing
 6100    return (jwb[st], st + 1)
 101end
 102
 103## Display
 0104function Base.summary(io::IO, jwb::JSONWorkbook)
 0105    @printf(io, "JSONWorkbook(\"%s\") containing %i Worksheets\n",
 106                basename(xlsxpath(jwb)), length(jwb))
 107end
 0108function Base.show(io::IO, jwb::JSONWorkbook)
 0109    summary(io, jwb)
 0110    @printf(io, "%5s %-16s %-13s\n", "index", "name", "size")
 0111    println(io, "-"^(5+1+16+1+13))
 112
 0113    index = sort(OrderedDict(jwb.sheetindex.lookup); byvalue = true)
 0114    for el in index
 0115        name = el[1]
 0116        _size = size(jwb[name]) |> x -> string(x[1], "x", x[2])
 117
 0118        @printf(io, "%5s %-16s %-13s\n", el[2], name, _size)
 119    end
 120end
 121

Methods/Properties