UNPKG

@hpcc-js/observablehq-compiler

Version:
91 lines (90 loc) 2.91 kB
import "./chunk-rwCFCtyI.js"; import e from "https://cdn.jsdelivr.net/npm/exceljs/+esm"; //#region ../../node_modules/@observablehq/notebook-kit/dist/src/runtime/stdlib/xlsx.js var t = class Workbook { constructor(e) { Object.defineProperties(this, { _: { value: e }, sheetNames: { value: e.worksheets.map((e) => e.name), enumerable: !0 } }); } static async load(t) { let n = new e.Workbook(); return await n.xlsx.load(t), new Workbook(n); } sheet(e, t) { let n = typeof e == "number" ? this.sheetNames[e] : this.sheetNames.includes(e = `${e}`) ? e : null; if (n == null) throw Error(`Sheet not found: ${e}`); let r = this._.getWorksheet(n); if (!r) throw Error(`Sheet not found: ${e}`); return extract(r, t); } }; Object.defineProperty(t, "name", { value: "Workbook" }); function extract(e, { range: t, headers: n } = {}) { let [[r, i], [a, o]] = parseRange(t, e), s = n ? e.getRow(++i) : null, c = new Set(["#"]); for (let e = r; e <= a; e++) { let t = s ? valueOf(s.findCell(e + 1)) : null, n = t && t + "" || toColumn(e); for (; c.has(n);) n += "_"; c.add(n); } let l = Array(r).concat(Array.from(c)), u = l.filter(() => !0), d = Object.assign(Array(o - i + 1), { columns: u }); for (let t = i; t <= o; t++) { let n = d[t - i] = Object.create(null, { "#": { value: t + 1 } }), o = e.getRow(t + 1); if (o.hasValues) for (let e = r; e <= a; e++) { let t = valueOf(o.findCell(e + 1)); t != null && (n[l[e + 1]] = t); } } return d; } function isPrimitive(e) { return !e || typeof e != "object" || e instanceof Date; } function isFormula(e) { return "formula" in e || "sharedFormula" in e; } function isRichText(e) { return "richText" in e; } function isHyperlink(e) { return "hyperlink" in e; } function valueOf(e) { if (!e) return; let { value: t } = e; if (isPrimitive(t)) return t; if (isFormula(t)) return isPrimitive(t.result) ? t.result : NaN; if (isRichText(t)) return richText(t); if (isHyperlink(t)) return hyperlink(t); } function richText(e) { return e.richText.map((e) => e.text).join(""); } function hyperlink({ hyperlink: e, text: t }) { return e && e !== t ? `${e} ${t}` : t; } function parseRange(e = ":", { columnCount: t, rowCount: n }) { if (e = `${e}`, !e.match(/^[A-Z]*\d*:[A-Z]*\d*$/)) throw Error("Malformed range specifier"); let [[r = 0, i = 0], [a = t - 1, o = n - 1]] = e.split(":").map(fromCellReference); return [[r, i], [a, o]]; } function toColumn(e) { let t = ""; e++; do t = String.fromCharCode(64 + (e % 26 || 26)) + t; while (e = Math.floor((e - 1) / 26)); return t; } function fromCellReference(e) { let [, t, n] = e.match(/^([A-Z]*)(\d*)$/), r = 0; if (t) for (let e = 0; e < t.length; e++) r += 26 ** (t.length - e - 1) * (t.charCodeAt(e) - 64); return [r ? r - 1 : void 0, n ? n - 1 : void 0]; } //#endregion export { t as Workbook }; //# sourceMappingURL=xlsx-BUACicGQ.js.map