{"adoption": {"forks": 199, "observed_at": "2026-09-03T02:15:11.409902+00:00", "stars": 1003}, "canonical_url": "https://ross.abutalabs.com/products/xlsx-populate", "card": {"archived": false, "artifact_type": "library", "description": "Excel XLSX parser/generator written in JavaScript with Node.js and browser support, jQuery/d3-style method chaining, encryption, and a focus on keeping existing workbook features and styles in tact.", "domain": ["files", "spreadsheets", "web-development", "developer-tools"], "enriched": true, "function": ["parser", "serialization", "cryptography"], "health_score": 20, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["dtjohnson/xlsx-populate"], "name": "dtjohnson/xlsx-populate", "platform": ["browser", "cross-platform"], "pushed_at": "2024-03-12T10:01:25+00:00", "repo": "dtjohnson/xlsx-populate", "stars": 1003, "tags": ["excel", "xlsx", "spreadsheet", "workbook", "method-chaining", "encryption", "template-population", "styles", "nodejs", "javascript"], "topics": ["javascript", "excel", "xlsx"], "urls": [], "use_cases": ["populate an Excel template with data in Node.js", "read and parse xlsx files in JavaScript", "generate Excel reports from a web app", "edit existing spreadsheets without losing formatting", "serve generated xlsx files from Express", "open password-protected Excel files in the browser"], "what_it_is": "A JavaScript library for parsing and generating Excel XLSX files, usable in both Node.js and the browser. It preserves existing workbook features and styles, supports method chaining, and can read and write encrypted workbooks.", "when_to_avoid": ["you need features the library explicitly lacks, like charts or pivot tables", "you need heavy-duty reading/writing of very large spreadsheets at high performance", "you need CSV or other spreadsheet formats, not just XLSX", "you need a library under very active development"], "when_to_choose": ["you need to modify existing XLSX files while preserving styles and features", "you want a lightweight pure-JS Excel library that works in Node and the browser", "you need workbook encryption/password support", "you prefer a fluent, chainable API for building spreadsheets"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/xlsx-populate", "repo": "dtjohnson/xlsx-populate", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.409902+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:16:05.965088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb81e8584b058c961d7dc36eaee05ac38ba17a09cdd4f654ff0f92779df38aa6", "fetched_at": "2026-09-03T02:15:11.409902+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtjohnson/xlsx-populate"}, {"content_hash": "95708f43c06757dfd314ecb491fb8600110d2e1f1f9d9d0471db2f4116877491", "fetched_at": "2026-08-29T13:14:15.968067+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/xlsx-populate"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.409902+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:16:05.965088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb81e8584b058c961d7dc36eaee05ac38ba17a09cdd4f654ff0f92779df38aa6", "fetched_at": "2026-09-03T02:15:11.409902+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtjohnson/xlsx-populate"}, {"content_hash": "95708f43c06757dfd314ecb491fb8600110d2e1f1f9d9d0471db2f4116877491", "fetched_at": "2026-08-29T13:14:15.968067+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/xlsx-populate"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:16:05.965088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb81e8584b058c961d7dc36eaee05ac38ba17a09cdd4f654ff0f92779df38aa6", "fetched_at": "2026-09-03T02:15:11.409902+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtjohnson/xlsx-populate"}, {"content_hash": "95708f43c06757dfd314ecb491fb8600110d2e1f1f9d9d0471db2f4116877491", "fetched_at": "2026-08-29T13:14:15.968067+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/xlsx-populate"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.409902+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.409902+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.409902+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:16:05.965088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb81e8584b058c961d7dc36eaee05ac38ba17a09cdd4f654ff0f92779df38aa6", "fetched_at": "2026-09-03T02:15:11.409902+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtjohnson/xlsx-populate"}, {"content_hash": "95708f43c06757dfd314ecb491fb8600110d2e1f1f9d9d0471db2f4116877491", "fetched_at": "2026-08-29T13:14:15.968067+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/xlsx-populate"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.409902+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.409902+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:16:05.965088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb81e8584b058c961d7dc36eaee05ac38ba17a09cdd4f654ff0f92779df38aa6", "fetched_at": "2026-09-03T02:15:11.409902+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtjohnson/xlsx-populate"}, {"content_hash": "95708f43c06757dfd314ecb491fb8600110d2e1f1f9d9d0471db2f4116877491", "fetched_at": "2026-08-29T13:14:15.968067+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/xlsx-populate"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.409902+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.409902+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.409902+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:16:05.965088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb81e8584b058c961d7dc36eaee05ac38ba17a09cdd4f654ff0f92779df38aa6", "fetched_at": "2026-09-03T02:15:11.409902+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtjohnson/xlsx-populate"}, {"content_hash": "95708f43c06757dfd314ecb491fb8600110d2e1f1f9d9d0471db2f4116877491", "fetched_at": "2026-08-29T13:14:15.968067+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/xlsx-populate"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.409902+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.409902+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:16:05.965088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb81e8584b058c961d7dc36eaee05ac38ba17a09cdd4f654ff0f92779df38aa6", "fetched_at": "2026-09-03T02:15:11.409902+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtjohnson/xlsx-populate"}, {"content_hash": "95708f43c06757dfd314ecb491fb8600110d2e1f1f9d9d0471db2f4116877491", "fetched_at": "2026-08-29T13:14:15.968067+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/xlsx-populate"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:16:05.965088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb81e8584b058c961d7dc36eaee05ac38ba17a09cdd4f654ff0f92779df38aa6", "fetched_at": "2026-09-03T02:15:11.409902+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtjohnson/xlsx-populate"}, {"content_hash": "95708f43c06757dfd314ecb491fb8600110d2e1f1f9d9d0471db2f4116877491", "fetched_at": "2026-08-29T13:14:15.968067+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/xlsx-populate"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:16:05.965088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb81e8584b058c961d7dc36eaee05ac38ba17a09cdd4f654ff0f92779df38aa6", "fetched_at": "2026-09-03T02:15:11.409902+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtjohnson/xlsx-populate"}, {"content_hash": "95708f43c06757dfd314ecb491fb8600110d2e1f1f9d9d0471db2f4116877491", "fetched_at": "2026-08-29T13:14:15.968067+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/xlsx-populate"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:16:05.965088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb81e8584b058c961d7dc36eaee05ac38ba17a09cdd4f654ff0f92779df38aa6", "fetched_at": "2026-09-03T02:15:11.409902+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtjohnson/xlsx-populate"}, {"content_hash": "95708f43c06757dfd314ecb491fb8600110d2e1f1f9d9d0471db2f4116877491", "fetched_at": "2026-08-29T13:14:15.968067+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/xlsx-populate"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4203, "days_push": 904, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}