Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

The open-source CSV importer, maintained by@tableflowhq

License

NotificationsYou must be signed in to change notification settings

tableflowhq/csv-import

Repository files navigation

CSV Import

Open-source CSV, TSV, and XLS/XLSX file importer for React and JavaScript

How It Works

  1. Embed the CSV Importer in your app with theReactorJavaScript SDK
  2. Define the columns your users can import (via thetemplate parameter)
  3. Your users import their files in your app
  4. Retrieve the imported data from theonComplete event

Importer Modal

Get Started

1. Install SDK

Use NPM or Yarn to install the SDK forReactorJavaScript.

NPM

npm install csv-import-react# ornpm install csv-import-js

Yarn

yarn add csv-import-react# oryarn add csv-import-js

2. Add the importer to your application

Using React

import{CSVImporter}from"csv-import-react";import{useState}from"react";functionMyComponent(){const[isOpen,setIsOpen]=useState(false);return(<><buttononClick={()=>setIsOpen(true)}>Open CSV Importer</button><CSVImportermodalIsOpen={isOpen}modalOnCloseTriggered={()=>setIsOpen(false)}darkMode={true}onComplete={(data)=>console.log(data)}template={{columns:[{name:"First Name",key:"first_name",required:true,description:"The first name of the user",suggested_mappings:["First","Name"],},{name:"Age",data_type:"number",},],}}/></>);}

Using JavaScript

<head><scriptsrc="https://unpkg.com/csv-import-js@latest/index.js"></script></head><body><buttonid="uploadButton">Open CSV Importer</button><divid="app"></div><script>constimporter=CSVImporter.createCSVImporter({domElement:document.getElementById("app"),modalOnCloseTriggered:()=>importer?.closeModal(),onComplete:(data)=>console.log(data),darkMode:true,template:{columns:[{name:"First Name",key:"first_name",required:true,description:"The first name of the user",suggested_mappings:["First","Name"],},{name:"Age",data_type:"number",},],},});constuploadButton=document.getElementById("uploadButton");uploadButton.addEventListener("click",()=>{importer?.showModal();});</script></body>

SDK Reference

isModal (boolean, default:true)

When set totrue (default value), the importer will behave as a modal with its open state controlled bymodalIsOpen. When set tofalse, the importer will be embedded directly in your page.

modalIsOpen (boolean, default:false)

Only used whenisModal istrue: Controls the importer modal being open or closed.
React SDK Only: For the JavaScript SDK, use.showModal() and.closeModal() to operate the modal.

modalOnCloseTriggered (function)

Only used whenisModal istrue: A function called when the user clicks the close button or clicks outside of (when used withmodalCloseOnOutsideClick) the importer.useState can be used to control the importer modal opening and closing.

const[isOpen,setIsOpen]=useState(false);
<buttononClick={()=>setIsOpen(true)}>Open CSV Importer</button><CSVImportermodalIsOpen={isOpen}modalOnCloseTriggered={()=>setIsOpen(false)}  .../>

modalCloseOnOutsideClick (boolean, default:false)

Only used whenisModal istrue: Clicking outside the modal will call themodalOnCloseTriggered function.

template (object)

Configure the columns used for the import.

template={{columns:[{name:"First Name",key:"first_name",required:true,description:"The first name of the user",suggested_mappings:["First","Name"],},{name:"Age",data_type:"number",},],}}

onComplete (function)

Callback function that fires when a user completes an import. It returnsdata, an object that contains the row data, column definitions, and other information about the import.

onComplete={(data)=>console.log(data)}

Exampledata:

{"num_rows":2,"num_columns":3,"columns": [    {"key":"age","name":"Age"    },    {"key":"email","name":"Email"    },    {"key":"first_name","name":"First Name"    }  ],"rows": [    {"index":0,"values": {"age":23,"email":"maria@example.com","first_name":"Maria"      }    },    {"index":1,"values": {"age":32,"email":"robert@example.com","first_name":"Robert"      }    }  ]}

darkMode (boolean, default:false)

Toggle between dark mode (true) and light mode (false).

primaryColor (string)

Specifies the primary color for the importer in hex format. UsecustomStyles to customize the UI in more detail.

primaryColor="#7A5EF8"

customStyles (object)

Apply custom styles to the importer with an object containing CSS properties and values. Note that custom style properties will overrideprimaryColor and any default styles fromdarkMode.Available options:

customStyles={{"font-family":"cursive","font-size":"15px","base-spacing":"2rem","border-radius":"8px","color-primary":"salmon","color-primary-hover":"crimson","color-secondary":"indianRed","color-secondary-hover":"crimson","color-tertiary":"indianRed","color-tertiary-hover":"crimson","color-border":"lightCoral","color-text":"brown","color-text-soft":"rgba(165, 42, 42, .5)","color-text-on-primary":"#fff","color-text-on-secondary":"#ffffff","color-background":"bisque","color-background-modal":"blanchedAlmond","color-input-background":"blanchedAlmond","color-input-background-soft":"white","color-background-menu-hover":"bisque","color-importer-link":"indigo","color-progress-bar":"darkGreen"}}

Internationalization

Predefined languages

  • Out-of-the-box support for various languages.
  • Common languages are available through the language prop (i.e.,language="fr" for French).
  • Available predefined languages:
    • en
    • es
    • fr

Customizable language

  • Language keys can be exported and overridden.
  • Labels and messages can be customized to any text.
  • Translations key examples can be found insrc/i18n/es.ts
// Set up custom translationsconstcustomTranslations={jp:{Upload:"アップロード","Browse files":"ファイルを参照",},pt:{Upload:"Carregar","Browse files":"Procurar arquivos",},};return(<CSVImporterlanguage="jp"customTranslations={customTranslations}...props/>)

showDownloadTemplateButton (boolean, default:true)

When set tofalse, hide the Download Template button on the first screen of the importer.

skipHeaderRowSelection (boolean, default:false)

When set totrue, the importer will not display and skip the Header Row Selection step and always choose the first row in the file as the header.

Contributing

Setting Up the Project

To set up the project locally, follow these steps:

  1. Clone the repository
git clone https://github.com/tableflowhq/csv-import.gitcd csv-import
  1. Install dependencies
yarn install
  1. Build the project
yarn build

Running Storybook

To run Storybook locally, follow these steps:

  1. Start Storybook
yarn storybook
  1. Open Storybook in your browser:Storybook should automatically open in your default browser. If it doesn't, navigate tohttp://localhost:6006.

Modifying the project and testing with the demo app

The project includes a demo app that you can use to test your changes. The demo app has its ownREADME.md file with detailed instructions on how to set it up and run it.

  1. Make your changes in the codebase.
  2. Follow the instructions in the demo app'sREADME.md to set up and run the demo app. This will help you verify that your changes work as expected in a real application.
  3. Commit your changes and push them to your forked repository.
  4. Create a pull request to the main repository.

Get In Touch

Let us know your feedback or feature requests! Submit a GitHubissuehere.


[8]ページ先頭

©2009-2025 Movatter.jp