نمایش اطلاعات csv در جاوا اسکریپت

نمایش اطلاعات csv در Javascript – در این آموزش قصد داریم که با کمک ajax فایل csv را دانلود کرده و اطلاعات آن
به آرایه تبدیل کرده و در یک جدول نمایش دهیم .
دقت داشته باشید آدرسی که برای دریافت csv وارد می کنید دسترسی Access-Control-Allow-Origin به شما دهد که به خطای CORS یا همان Cross-origin resource sharing مواجه نشوید .
فایل index.php
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="UTF-8">
<title>Rapidcode.iR - سورس کد</title>
<link rel="stylesheet" href="static/css/main.css">
</head>
<body>
<div class="container">
<a id="introduce" href="https://rapidcode.ir" target="_blank">رپید کد • کتابخانه مجازی برنامه نویسان</a>
<input type="url" id="url" placeholder="https://example.com/data.csv">
<input type="button" id="show" value="نمایش">
</div>
<script src="static/js/app.js"></script>
</body>
</html>
اسکریپت app.js
const urlDOM = document.getElementById("url");
const showDOM = document.getElementById("show");
showDOM.onclick = function () {
const url = urlDOM.value;
if (url == "") {
alert("هیچ آدرسی وارد نشده است")
return false;
}
// the url most have Access-Control-Allow-Origin:* on server side
getCsvFile(url);
}
function getCsvFile(url) {
const xhr = new XMLHttpRequest();
xhr.open("GET", url);
showDOM.setAttribute("disabled", "disabled");
xhr.onreadystatechange = function (e) {
if (this.status === 200 && this.readyState == this.DONE) {
let csvData = this.response;
csvData = csvParser(csvData);
const html = generateTableByCsv(csvData["keys"], csvData["values"]);
const container = document.getElementsByClassName("container")[0];
container.innerHTML += html;
} else if (this.status < 200 && this.readyState == this.DONE) {
window.alert("خطای شبکه");
console.error("ERR");
}
showDOM.removeAttribute("disabled");
}
xhr.send();
}
function csvParser(csv) {
let csvData = csv.split("\n");
let csvKeys = csvData[0];
csvData.shift();
csvKeys = csvKeys.split(",");
csvKeys = csvKeys.map((val) => val.trim());
csvData = csvData.map(val => val.split(","));
const csvDataFiltered = {
"keys": csvKeys,
"values": csvData
}
return csvDataFiltered;
}
function generateTableByCsv(keys, values) {
let head = "<tr>";
keys.forEach(function (element) {
head += `<th>${element}</th>`;
});
head += "</tr>";
let body = "";
for (const depth1 of values) {
body += "<tr>";
for (const depth2 of depth1) {
body += `<td>${depth2}</td>`;
}
body += "</tr>";
}
let templateHtml = `<table><thead>${head}</thead><tbody>${body}</tbody></table>`;
return templateHtml;
}
فایل main.css
table{
border-collapse: collapse;
}
table tr td , table tr th{
border: 1px solid;
padding: 5px;
}
ارسال نظر