react-export-table-to-excel
Version:
It allows you to export an HTML table just by sending the table reference and the name with which you want the file to be saved
43 lines (42 loc) • 1.97 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(require("react"));
const server_1 = require("react-dom/server");
const acceptTypes = ["string", "number", "boolean"];
function createTable({ header, body }) {
const headers = (react_1.default.createElement("tr", null, header.map((head) => (react_1.default.createElement("th", { key: head }, head)))));
const bodies = body.map((val, i) => {
if (Array.isArray(val)) {
return (react_1.default.createElement("tr", { key: i }, val.map((value, i) => (react_1.default.createElement("th", { key: i },
" ",
value,
" ")))));
}
if (val !== null && typeof val === "object") {
return (react_1.default.createElement("tr", { key: i }, Object.entries(val).map(([key, value], i) => {
if (typeof value === "object") {
console.error(`typeof ${key} is incorrect, only accept ${acceptTypes.join(", ")} `);
return react_1.default.createElement("th", { key: i });
}
return (react_1.default.createElement("th", { key: i },
react_1.default.createElement(react_1.default.Fragment, null, value)));
})));
}
console.error(`
data structure is incorrect,
data structure type ->
" type data = Array<{ [key: string]: string | number | boolean }>
or
type data = Array<(string | number | boolean)[]>"
`);
return null;
});
return (0, server_1.renderToString)(react_1.default.createElement("table", null,
react_1.default.createElement("tbody", null,
headers,
bodies)));
}
exports.default = createTable;