Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fa8d223311 | |||
| ab7a43a93f | |||
| d9ee930204 | |||
| abfeea00ec | |||
| b7333cc184 | |||
| 338d2033bb | |||
| ad92cd2899 | |||
| 3a0191a5d6 | |||
| e1ebbf67d8 | |||
| 201be2179e | |||
| acf0978d76 | |||
|
|
6c238508e2 |
6
.github/workflows/docker-publish.yml
vendored
6
.github/workflows/docker-publish.yml
vendored
@@ -1,8 +1,8 @@
|
||||
name: Docker CI
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [created]
|
||||
push:
|
||||
branches: [main]
|
||||
|
||||
jobs:
|
||||
docker:
|
||||
@@ -20,4 +20,4 @@ jobs:
|
||||
|
||||
- name: Build and Push from Makefile
|
||||
run: |
|
||||
make build
|
||||
make build publish
|
||||
|
||||
13
.github/workflows/npm-publish.yml
vendored
13
.github/workflows/npm-publish.yml
vendored
@@ -25,16 +25,3 @@ jobs:
|
||||
- run: npm publish
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
|
||||
|
||||
publish-gpr:
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: 14
|
||||
registry-url: https://npm.pkg.github.com/
|
||||
- run: npm publish
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||
|
||||
12
Dockerfile
12
Dockerfile
@@ -3,7 +3,7 @@ LABEL maintainer="sombochea@cubetiqs.com"
|
||||
|
||||
VOLUME [ "/app/data" ]
|
||||
|
||||
ENV INPUT_FILE './data/people.xlsx'
|
||||
ENV INPUT_FILE './data/source.xlsx'
|
||||
ENV OUTPUT_PATH './data/outputs'
|
||||
ENV MAPPER_FILE './data/mapper.json'
|
||||
|
||||
@@ -11,6 +11,12 @@ WORKDIR /app
|
||||
|
||||
COPY . /app
|
||||
|
||||
RUN yarn
|
||||
RUN npm install
|
||||
|
||||
CMD [ "node" , "index.js"]
|
||||
RUN npm link
|
||||
|
||||
RUN ln -s $(which excel2json-xlsx) /usr/bin/x2j
|
||||
|
||||
ENTRYPOINT [ "/usr/bin/x2j"]
|
||||
|
||||
CMD [ "--help" ]
|
||||
6
Makefile
6
Makefile
@@ -1,4 +1,4 @@
|
||||
DOCKER_IMAGE=cubetiq/node-excel2json
|
||||
DOCKER_IMAGE=cubetiq/excel2json
|
||||
|
||||
build:
|
||||
@echo "Building docker image..."
|
||||
@@ -8,4 +8,8 @@ run:
|
||||
@echo "Running container..."
|
||||
docker run --rm -t ${DOCKER_IMAGE}
|
||||
|
||||
publish:
|
||||
@echo "Publishing docker image..."
|
||||
docker push ${DOCKER_IMAGE}
|
||||
|
||||
.PHONY: build
|
||||
|
||||
20
README.md
20
README.md
@@ -1,11 +1,13 @@
|
||||
# excel2json
|
||||
|
||||
[](https://github.com/CUBETIQ/excel2json/actions/workflows/npm-publish.yml)
|
||||
[](https://github.com/CUBETIQ/excel2json/actions/workflows/docker-publish.yml)
|
||||

|
||||

|
||||
|
||||
- Read file excel to json
|
||||
- Custom mapping with custom columns and configs
|
||||
- Custom props
|
||||
- Docker suppport
|
||||
|
||||
# Install
|
||||
```shell
|
||||
@@ -21,7 +23,21 @@ yarn add global excel2json-xlsx
|
||||
```
|
||||
Usage
|
||||
```shell
|
||||
excel2json-xlsx -i people.xlsx -o exported.json
|
||||
excel2json-xlsx -i source.xlsx -o exported.json
|
||||
```
|
||||
OR
|
||||
```shell
|
||||
npx excel2json -i source.xlsx -o exported.json
|
||||
```
|
||||
|
||||
# [Docker Hub](https://hub.docker.com/r/cubetiq/excel2json)
|
||||
***Pulling image***
|
||||
```shell
|
||||
docker pull cubetiq/excel2json
|
||||
```
|
||||
***Run container***
|
||||
```shell
|
||||
docker run --rm -it -v /my/path/data:/app/data cubetiq/excel2json -i ./data/source.xlsx -p true
|
||||
```
|
||||
|
||||
# Build
|
||||
|
||||
12
bin/cli.js
12
bin/cli.js
@@ -29,12 +29,18 @@ const options = yargs
|
||||
type: "string",
|
||||
demandOption: false,
|
||||
})
|
||||
.argv;
|
||||
.option("p", {
|
||||
alias: "print",
|
||||
describe: "Print the exported json to console",
|
||||
type: "boolean",
|
||||
demandOption: false,
|
||||
}).argv;
|
||||
|
||||
const inputFile = options.input;
|
||||
const outputFile = options.output;
|
||||
const mapperFile = options.mapper;
|
||||
const sheetName = options.sheet;
|
||||
const print = options.print;
|
||||
|
||||
const exported = excel2json({
|
||||
inputFile: inputFile,
|
||||
@@ -42,3 +48,7 @@ const exported = excel2json({
|
||||
outputFile: outputFile,
|
||||
sheetName: sheetName,
|
||||
});
|
||||
|
||||
if (print) {
|
||||
console.log(exported);
|
||||
}
|
||||
|
||||
@@ -1,18 +1 @@
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"dataIndex": "Name",
|
||||
"label": "Name"
|
||||
},
|
||||
{
|
||||
"dataIndex": "Age",
|
||||
"label": "Age"
|
||||
}
|
||||
],
|
||||
"configs": {
|
||||
"outputPath": "./data/outputs/exported",
|
||||
"outputName": "my_exported_data",
|
||||
"sheetName": "Sheet1",
|
||||
"saveToOutput": true
|
||||
}
|
||||
}
|
||||
{}
|
||||
@@ -8,8 +8,7 @@ function _internalExport(props = {}) {
|
||||
console.log("Name =>", NAME, "\n");
|
||||
|
||||
// load from env
|
||||
const INPUT_FILE =
|
||||
props.inputFile || process.env.INPUT_FILE || "./data/people.xlsx";
|
||||
const INPUT_FILE = props.inputFile || process.env.INPUT_FILE;
|
||||
const OUTPUT_PATH =
|
||||
props.outputPath || process.env.OUTPUT_PATH || "./data/outputs";
|
||||
const MAPPER_FILE =
|
||||
@@ -31,16 +30,21 @@ function _internalExport(props = {}) {
|
||||
}
|
||||
);
|
||||
} catch (err) {
|
||||
console.error("read file error", err);
|
||||
// console.error("read file error", err);
|
||||
}
|
||||
|
||||
// convert mapper from string to json object
|
||||
const mapperJson = mapperString ? JSON.parse(mapperString) : {};
|
||||
const configs = { ...mapperJson.configs, ...props };
|
||||
const columsData = props.mappings || mapperJson.data || undefined;
|
||||
const inFile = configs.inputFile || INPUT_FILE;
|
||||
|
||||
if (!inFile) {
|
||||
throw Error("Input file is required!");
|
||||
}
|
||||
|
||||
// read workbook from excel file
|
||||
const wb = XLSX.readFile(configs.inputFile || INPUT_FILE);
|
||||
const wb = XLSX.readFile(inFile);
|
||||
const xlData = XLSX.utils.sheet_to_json(
|
||||
wb.Sheets[configs.sheetName || SHEET_NAME]
|
||||
);
|
||||
|
||||
4
index.js
4
index.js
@@ -2,7 +2,9 @@
|
||||
const excel2json = require("./excel2json");
|
||||
|
||||
// called function export excel2json
|
||||
const exported = excel2json();
|
||||
const exported = excel2json({
|
||||
inputFile: "./data/source.xlsx"
|
||||
});
|
||||
|
||||
// output data from exported
|
||||
console.log("Output =>\n", exported);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "excel2json-xlsx",
|
||||
"version": "1.0.1",
|
||||
"version": "1.0.4",
|
||||
"keywords": [
|
||||
"excel",
|
||||
"json",
|
||||
|
||||
Reference in New Issue
Block a user