├── .babelrc
├── .github
└── FUNDING.yml
├── .gitignore
├── LICENSE
├── README.md
├── build
└── index.js
├── package-lock.json
├── package.json
├── src
└── index.js
└── webpack.config.js
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["env"],
3 | "plugins": [
4 | "transform-object-rest-spread",
5 | "transform-react-jsx"
6 | ]
7 | }
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 | custom: ['https://www.buymeacoffee.com/ashishd751']
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (https://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # TypeScript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
60 | # next.js build output
61 | .next
62 |
63 | *.iml
64 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Ashish Deshpande
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # react-excel-renderer   
2 | A react library to render and display excel sheets on webpage
3 |
4 | ---
5 |
6 | ## Demo
7 | * A sample demo can be found - [here](https://ashishd751.github.io/excel-renderer-demo/)
8 | * You can find code for the demo - [here](https://github.com/ashishd751/excel-renderer-demo)
9 |
10 | 
11 |
12 | ## Installation
13 |
14 | ```
15 | npm install react-excel-renderer --save
16 | ```
17 |
18 | ## Usage
19 | * Import the primary module *ExcelRenderer* to convert sheet data into JSON format.
20 | * Also import *OutTable* to display the obtained JSON into a HTML Table.
21 | ```
22 | import {OutTable, ExcelRenderer} from 'react-excel-renderer';
23 | ```
24 | * Place a simple `input` element in the render function of your class and pass an `onChange` handler
25 | ```
26 |
27 | ```
28 | * In the `onChange` handler, invoke the `ExcelRenderer` function and provide file object from the event handler to the `ExcelRenderer` function to obtain JSON data from sheet
29 | ```
30 | fileHandler = (event) => {
31 | let fileObj = event.target.files[0];
32 |
33 | //just pass the fileObj as parameter
34 | ExcelRenderer(fileObj, (err, resp) => {
35 | if(err){
36 | console.log(err);
37 | }
38 | else{
39 | this.setState({
40 | cols: resp.cols,
41 | rows: resp.rows
42 | });
43 | }
44 | });
45 |
46 | }
47 | ```
48 | * Use the OutTable component to render obtained JSON data into HTML table, and provide classnames as props to make table look alike an Excel Sheet
49 | ```
50 |
} 20 | { 21 | this.props.columns.map((c) => 22 | | {c.key === -1 ? "" : c.name} | 23 | ) 24 | 25 | } 26 |
---|---|
{this.props.renderRowNum?this.props.renderRowNum(r,i):i} | } 29 | {this.props.columns.map(c =>{ r[c.key] } | )} 30 |