CDS pluginCDS plugintypeInstalls into a CAP project and extends the runtime. CAP loads it through cds.requires or the plugin hook.See every one →What this type is →by a community orgby a community orgoriginPublished by a community organisation, so it outlives any one maintainer.See every one →

cds-spreadsheetimporter-plugin

A CAP plugin that adds an ImporterService accepting an uploaded Excel file, parses it on the server and writes its rows into the CDS entity named in the URL.

Adds an ImporterService to a CAP project whose Spreadsheet entity accepts an Excel file by PUT at /odata/v4/importer/Spreadsheet(entity='...')/content, parses it in the service and writes the rows into the entity named in the URL. The whole file goes to the backend rather than being read in the browser, which the documentation gives as the reason to reach for it on large files. By default every entity is a valid target; annotating any service entity with @spreadsheetimporter.enabled turns that into an allow-list and every other entity is refused with 403 SPREADSHEET_IMPORT_ENTITY_NOT_ENABLED, and annotating a projection also enables the persistence entity behind it. That annotation chooses targets and nothing else — who may upload is still CAP's own @requires and @restrict on the importer service. It pairs with the ui5-cc-spreadsheetimporter UI5 component through its directUploadConfig option, and a plain FileUploader posting to the same endpoint works as well.

Facts

Latestv1.1.0ReleasedLast pushLicenceISC

Where it sits

Lives in
Provides
Importing and exporting table dataCAPImporting and exporting table datacapabilityGetting a file somebody supplies, a spreadsheet, a CSV or a JSON dump, into tables with its columns mapped and its values checked, and getting table content back out as a file. Data shipped with an application for development and demonstration is [seed data](capability:seed-data).
Flavors
Node.jsfrom its runtime
Requires
@sap/cds≥ 7@sap/cdsartifactThe peer range, as published.

Who is behind it

Wouter LemaireWouter LemairePersonMaintains this
In the atlas: maintains 25, contributes to 39, wrote 12
@lemaiwo
Marian ZeisMarian ZeisPersonMaintains this
In the atlas: maintains 35, contributes to 86, wrote 25
@marianfoo
Spreadsheet ImporterSpreadsheet ImporterOrganisationMaintains this
In the atlas: maintains 9
@spreadsheetimporter
maintainers

Before choosing this

Conditions

LicenceSAP Developer License Agreement 3.2 CAP§ 1, 2, 3A cds-plugin is used with SAP CAP materials, or an artifact is explicitly identified as a CAP plugin or application.
  • § 1 License. Productive customer applications are limited to SAP BTP or another SAP-licensed platform, and mass extraction to a non-SAP product is restricted except where solely required for SAP interoperability.
  • § 2 Intellectual Property. The agreement retains SAP's rights in the covered materials and limits making APIs, tools or software available to third parties, while preserving ownership of customer applications subject to SAP's underlying rights.
  • § 3 Artificial Intelligence Training. The agreement prohibits use of the covered materials and customer applications for training artificial-intelligence models or systems.
SAP Developer License Agreement 3.2 CAP →

Also, from Importing and exporting table data§ 1: The export side can become the data-extraction case named in section 1. File format alone does not decide it; destination, scale and the scoped interoperability purpose matter.

What it declares

Every artifact

Type
CDS plugin
Origin
By a community org
Runtime
Node.js

As a CDS plugin

Declared for
>=7
Distributed through
does not say

Connections1

Install

npm add cds-spreadsheetimporter-plugin

Derived from the package name. No recipe recorded; the README has the configuration.

Learn more1

Readings
  1. Create your first CAP pluginWouter Lemaire, SAP Community

README

quoted from spreadsheetimporter/cds-spreadsheetimporter-plugin under ISC, read
spreadsheetimporter/cds-spreadsheetimporter-plugin/README.mdOn GitHub

cds-spreadsheetimporter-plugin

This is a plugin for the CAP framework that allows you to import data from spreadsheets into your CAP project.

Enable Import for Selected Entities

By default, the importer keeps the existing behavior and allows uploads for all entities. To limit uploads to selected entities, annotate the allowed service entities with @spreadsheetimporter.enabled in your CDS model:

using my.bookshop as my from '../db/schema';
using from 'cds-spreadsheetimporter-plugin';

service CatalogService {
    @spreadsheetimporter.enabled
    entity Books as projection on my.Books;

    entity Authors as projection on my.Authors;
}

When at least one entity is annotated, the importer rejects uploads for every other entity with 403 SPREADSHEET_IMPORT_ENTITY_NOT_ENABLED. Annotating a service projection also enables uploads for its underlying persistence entity, so existing URLs such as /odata/v4/importer/Spreadsheet(entity='my.bookshop.Books')/content keep working. Short entity names resolved by CAP, such as Books, are supported as well.

Use this annotation only to control which entities the importer may target. For user or role-based authorization, continue to use CAP authorization annotations such as @requires or @restrict on the importer service or your application services. For example:

annotate ImporterService with @requires: 'Admin';

Release Process

This project uses release-it to automate version management and package publishing. The release workflow is configured through GitHub Actions and can be triggered in two ways:

Manual Release
  1. Go to the GitHub repository's "Actions" tab
  2. Select the "Release" workflow
  3. Click "Run workflow"
  4. You can either:
    • Leave the version field empty for automatic versioning based on conventional commits
    • Specify a specific version (e.g., "1.2.0")
Local Release (for maintainers)

If you prefer to release from your local machine:

  1. Ensure you have the necessary credentials:
    • NPM_TOKEN for publishing to npm
    • GITHUB_TOKEN for creating GitHub releases
  2. Run one of the following commands:
    npm run release              # For automatic versioning
    npm run release X.Y.Z        # For specific version
What happens during release?

The release process will:

  1. Determine the next version number (based on conventional commits or manual input)
  2. Update the package.json version
  3. Generate/update the CHANGELOG.md file
  4. Create a git tag
  5. Push changes to GitHub
  6. Create a GitHub release with release notes
  7. Publish the package to npm

The release configuration uses the Angular conventional commit preset for changelog generation and requires commit messages to follow the conventional commits specification.

ISC, read

History

Latest

v1.1.0

Features 1

Notes
Features
  • allow scoped spreadsheet imports (#2) (05e9b2f)
  1. v1.0.3

    Fixes 1

    Notes
    Bug Fixes
    • proper handling of stream (419ba9b)
  2. v1.0.2

    Fixes 1

    Notes
    Bug Fixes
    • add error handling if entity is not available (516009b)
  3. v1.0.1

    Fixes 1

    Notes
    Bug Fixes
    • add error handling to avoid server crashes (7a3856c)
  4. v1.0.0

    Features 1

    Notes
    Features
    • Initial release of cds-spreadsheetimporter-plugin
41downloads per week, npm
Weekly downloads for cds-spreadsheetimporter-plugin26 complete calendar weeks from 2026-04-20 to 2026-10-18; the latest total is 41.20 Apr – 26 Apr: 6527 Apr – 3 May: 1384 May – 10 May: 9111 May – 17 May: 8818 May – 24 May: 7725 May – 31 May: 641 Jun – 7 Jun: 1348 Jun – 14 Jun: 15815 Jun – 21 Jun: 26122 Jun – 28 Jun: 7329 Jun – 5 Jul: 846 Jul – 12 Jul: 8913 Jul – 19 Jul: 7720 Jul – 26 Jul: 7327 Jul – 2 Aug: 833 Aug – 9 Aug: 7510 Aug – 16 Aug: 9717 Aug – 23 Aug: 5924 Aug – 30 Aug: 5631 Aug – 6 Sept: 407 Sept – 13 Sept: 5814 Sept – 20 Sept: 7021 Sept – 27 Sept: 9228 Sept – 4 Oct: 685 Oct – 11 Oct: 5612 Oct – 18 Oct: 41

Details

Sources4
The discovery passdiscovered here, npmchecked
npm registry, cds-spreadsheetimporter-pluginversion, releases, installschecked
README.mdquoted, and what the entry declareschecked

Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.

Compatibility and provenance
runtimesnode
declared for>=7
latestv1.1.0
first release
releases and cadence5, ~137d median
discovered viaThe discovery pass · npm
first seen in the atlas
ecosystem and domaincap, data-and-persistence
History in the atlas1
  1. First seen.
For your agent
Ref
artifact:spreadsheetimporter-cds-spreadsheetimporter-plugin
JSON
/artifacts/spreadsheetimporter-cds-spreadsheetimporter-plugin.json
MCP
Connecting an agent