I have a table with data and I need to export it as file.txt
.I have tried few solutions that I found but nothing works good, it was successful just when I export the table as file.xls. I need to finish this with Javascript. I have csv file with data that I use to insert in the table, but I don't know where to upload here. It is iris dataset csv
, which you can find https://gist.github.com/curran/a08a1080b88344b0c8a7.
$(document).ready(function () {
$.ajax({
url: "iris_data.csv",
dataType: "text",
success: function (data) {
var iris_data = data.split(/\r?\n|\r/);
var jsonObj = [];
for (var i = 0; i < iris_data.length; i++) {
var data = iris_data[i].split('\n');
var obj = {};
for (var j = 0; j < data.length; j++) {
obj = data[j].trim();
jsonObj.push(obj);
}
}
var arr = JSON.stringify(jsonObj);
arr = (arr.split('["'))
arr = arr.toString()
arr = (arr.split("]"))
arr = arr.toString()
arr1 = arr.split('","');
function fillIn() {
var N_setosa = 0;
var N_versicolor = 0;
var N_virginica = 0;
var newSetosaArr = [];
var newVersicolorArr = [];
var newVirginicaArr = [];
var subString;
for (var i = 0; i < arr1.length; i++) {
if (arr1[i].includes('Iris-setosa')) {
subString = arr1[i];
var subArray = subString.split(",")
if (subArray[0] === "") {
var item = subArray[1];
newSetosaArr.push(item)
} else {
newSetosaArr.push(subArray[0]);
}
N_setosa++;
document.getElementById('N_setosa').innerHTML = N_setosa;
} else if (arr1[i].includes('Iris-versicolor')) {
subString = arr1[i];
var subArray = subString.split(",");
newVersicolorArr.push(subArray[0]);
document.getElementById('N_versicolor').innerHTML = newVersicolorArr.length;
N_versicolor++;
} else if (arr1[i].includes('Iris-virginica')) {
subString = arr1[i];
var subArray = subString.split(",");
newVirginicaArr.push(subArray[0]);
document.getElementById('N_virginica').innerHTML = newVirginicaArr.length;
N_virginica++;
}
document.getElementById('N_total').innerHTML = N_setosa + N_versicolor + N_virginica;
}
function getMin(array) {
var result = [];
for (var i = 0; i < array.length; i++) {
if ((array[i][0] !== "") && !(isNaN(parseFloat(array[i][0])))) {
var item = parseFloat(array[i]);
result.push(item);
} else console.log("fail")
}
return Math.min(...result);
}
document.getElementById('min_setosa').innerHTML = getMin(newSetosaArr);
document.getElementById('min_versicolor').innerHTML = getMin(newVersicolorArr);
document.getElementById('min_virginica').innerHTML = getMin(newVirginicaArr);
document.getElementById('min_total').innerHTML = getMin(newSetosaArr) + getMin(newVersicolorArr) + getMin(newVirginicaArr);
function getMax(array) {
var result = [];
for (var i = 0; i < array.length; i++) {
if ((array[i][0] !== "") && !(isNaN(parseFloat(array[i][0])))) {
var item = parseFloat(array[i]);
result.push(item);
} else console.log("fail")
}
return Math.max(...result);
}
document.getElementById('max_setosa').innerHTML = getMax(newSetosaArr);
document.getElementById('max_versicolor').innerHTML = getMax(newVersicolorArr);
document.getElementById('max_virginica').innerHTML = getMax(newVirginicaArr);
var sum = getMax(newSetosaArr) + getMax(newVersicolorArr) + getMax(newVirginicaArr);
document.getElementById('max_total').innerHTML = sum.toFixed(1);
function getMedian(array) {
var result = [];
for (var i = 0; i < array.length; i++) {
if ((array[i][0] !== "") && !(isNaN(parseFloat(array[i][0])))) {
var item = parseFloat(array[i]);
result.push(item);
} else console.log("fail")
}
arr = [...result].sort((a, b) => a - b)
return (arr[arr.length - 1 >> 1] + arr[arr.length >> 1]) / 2;
}
document.getElementById('median_setosa').innerHTML = getMedian(newSetosaArr);
document.getElementById('median_versicolor').innerHTML = getMedian(newVersicolorArr);
document.getElementById('median_virginica').innerHTML = getMedian(newVirginicaArr);
var sum = getMedian(newSetosaArr) + getMedian(newVersicolorArr) + getMedian(newVirginicaArr);
document.getElementById('median_total').innerHTML = sum.toFixed(1);
function getMean(array) {
var result = [];
for (var i = 0; i < array.length; i++) {
if ((array[i][0] !== "") && !(isNaN(parseFloat(array[i][0])))) {
var item = parseFloat(array[i]);
result.push(item);
} else console.log("fail")
}
var sum = result.reduce((a, b) => a + b, 0)
var konacno = sum / result.length;
return konacno;
}
document.getElementById('mean_setosa').innerHTML = getMean(newSetosaArr).toFixed(1);
document.getElementById('mean_versicolor').innerHTML = getMean(newVersicolorArr).toFixed(1);
document.getElementById('mean_virginica').innerHTML = getMean(newVirginicaArr).toFixed(1);
var sum = getMean(newSetosaArr) + getMean(newVersicolorArr) + getMean(newVirginicaArr);
document.getElementById('mean_total').innerHTML = sum.toFixed(1);
function getStDeviation(array) {
var result = [];
for (var i = 0; i < array.length; i++) {
if ((array[i][0] !== "") && !(isNaN(parseFloat(array[i][0])))) {
var item = parseFloat(array[i]);
result.push(item);
} else console.log("fail")
}
const n = result.length;
const mean = result.reduce((a, b) => a + b) / n;
const s = Math.sqrt(array.map(x => Math.pow(x - mean, 2)).reduce((a, b) => a + b) / n);
return s;
}
document.getElementById('sd_setosa').innerHTML = getStDeviation(newSetosaArr).toFixed(1);
document.getElementById('sd_versicolor').innerHTML = getStDeviation(newVersicolorArr).toFixed(1);
document.getElementById('sd_virginica').innerHTML = getStDeviation(newVirginicaArr).toFixed(1);
var sum = getStDeviation(newSetosaArr) + getStDeviation(newVersicolorArr) + getStDeviation(newVirginicaArr);
document.getElementById('sd_total').innerHTML = sum.toFixed(1)
var first = [];
var second = [];
var third = [];
var fourth = [];
function izrSetosa(arr) {
var result = [];
for (var i = 0; i < arr.length; i++) {
if ((arr[i][0] !== "") && !(isNaN(parseFloat(arr[i][0])))) {
var item = parseFloat(arr[i]);
result.push(item);
}
}
for (var i = 0; i < result.length; i++) {
if (result[i][0] !== "" && result[i] < 5) {
first.push(result[i])
document.getElementById('first_setosa').innerHTML = first.length + ' ' + '(' + (first.length * 100 / N_setosa).toFixed(1) + ")";
} else if (result[i] >= 5 && result[i] < 6) {
second.push(result[i])
document.getElementById('second_setosa').innerHTML = second.length + ' ' + '(' + (second.length * 100 / N_setosa).toFixed(1) + ")";
} else if (result[i] >= 6 && result[i] < 7) {
third.push(result[i])
document.getElementById('third_setosa').innerHTML = third.length + ' ' + '(' + (third.length * 100 / N_setosa).toFixed(1) + ")";
} else if (result[i] >= 7) {
fourth.push(result[i])
document.getElementById('fourth_setosa').innerHTML = fourth.length + ' ' + '(' + (fourth.length * 100 / N_setosa).toFixed(1) + ")";
}
}
return first, second, third, fourth;
}
izrSetosa(newSetosaArr)
var firstVer = [];
var secondVer = [];
var thirdVer = [];
var fourthVer = [];
function izrVersicolor(arr) {
var result = [];
for (var i = 0; i < arr.length; i++) {
if ((arr[i][0] !== "") && !(isNaN(parseFloat(arr[i][0])))) {
var item = parseFloat(arr[i]);
result.push(item);
}
}
for (var i = 0; i < result.length; i++) {
if (result[i][0] !== "" && result[i] < 5) {
firstVer.push(result[i])
document.getElementById('first_versicolor').innerHTML = firstVer.length + ' ' + '(' + (firstVer.length * 100 / N_versicolor).toFixed(1) + ")";
} else if (result[i] >= 5 && result[i] < 6) {
secondVer.push(result[i])
document.getElementById('second_versicolor').innerHTML = secondVer.length + ' ' + '(' + (secondVer.length * 100 / N_versicolor).toFixed(1) + ")";
} else if (result[i] >= 6 && result[i] < 7) {
thirdVer.push(result[i])
document.getElementById('third_versicolor').innerHTML = thirdVer.length + ' ' + '(' + (thirdVer.length * 100 / N_versicolor).toFixed(1) + ")";
} else if (result[i] >= 7) {
fourthVer.push(result[i])
document.getElementById('fourth_versicolor').innerHTML = fourthVer.length + ' ' + '(' + (fourthVer.length * 100 / N_versicolor).toFixed(1) + ")";
}
}
return firstVer, secondVer, thirdVer, fourthVer;
}
izrVersicolor(newVersicolorArr)
var firstVir = [];
var secondVir = [];
var thirdVir = [];
var fourthVir = [];
function izrVirginica(arr) {
var result = [];
for (var i = 0; i < arr.length; i++) {
if ((arr[i][0] !== "") && !(isNaN(parseFloat(arr[i][0])))) {
var item = parseFloat(arr[i]);
result.push(item);
}
}
for (var i = 0; i < result.length; i++) {
if (result[i][0] !== "" && result[i] < 5) {
firstVir.push(result[i])
document.getElementById('first_virginica').innerHTML = firstVir.length + ' ' + '(' + (firstVir.length * 100 / N_virginica).toFixed(1) + ")";
} else if (result[i] >= 5 && result[i] < 6) {
secondVir.push(result[i])
document.getElementById('second_virginica').innerHTML = secondVir.length + ' ' + '(' + (secondVir.length * 100 / N_virginica).toFixed(1) + ")";
} else if (result[i] >= 6 && result[i] < 7) {
thirdVir.push(result[i])
document.getElementById('third_virginica').innerHTML = thirdVir.length + ' ' + '(' + (thirdVir.length * 100 / N_virginica).toFixed(1) + ")";
} else if (result[i] >= 7) {
fourthVir.push(result[i])
document.getElementById('fourth_virginica').innerHTML = fourthVir.length + ' ' + '(' + (fourthVir.length * 100 / N_virginica).toFixed(1) + ")";
}
}
return firstVir, secondVir, thirdVir, fourthVir;
}
izrVirginica(newVirginicaArr);
document.getElementById('fourth_total').innerHTML = fourthVir.length + fourthVer.length + fourth.length + ' ' + '(' + ((fourthVir.length + fourthVer.length + fourth.length) * 100 / (N_setosa + N_versicolor + N_virginica)).toFixed(1) + ")";
document.getElementById('third_total').innerHTML = thirdVir.length + thirdVer.length + third.length + ' ' + '(' + ((thirdVir.length + thirdVer.length + third.length) * 100 / (N_setosa + N_versicolor + N_virginica)).toFixed(1) + ")";
document.getElementById('second_total').innerHTML = secondVir.length + secondVer.length + second.length + ' ' + '(' + ((secondVir.length + secondVer.length + second.length) * 100 / (N_setosa + N_versicolor + N_virginica)).toFixed(1) + ")";
document.getElementById('first_total').innerHTML = firstVir.length + firstVer.length + first.length + ' ' + '(' + ((firstVir.length + firstVer.length + first.length) * 100 / (N_setosa + N_versicolor + N_virginica)).toFixed(1) + ")";
}
return fillIn();
}
});
});
function exportF(elem) {
var table = document.getElementById("table");
var html = table.outerHTML;
var url = 'data:application/vnd.ms-excel,' + escape(html);
elem.setAttribute("href", url);
elem.setAttribute("download", "export.xls");
return false;
}
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="solution.js"></script>
</head>
<body>
<style type="text/css">
.tg {border-collapse:collapse;border-spacing:0;}
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:20px 77px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;}
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:20px 77px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;}
.tg .tg-0pky{border-color:inherit;text-align:left;vertical-align:top}
</style>
<table class="tg" id='table'>
<tr>
<th class="tg-0pky"></th>
<th class="tg-0pky">Iris Setosa </th>
<th class="tg-0pky">Iris Versicolor </th>
<th class="tg-0pky">Iris Virginica</th>
<th class="tg-0pky">Total</th>
</tr>
<tr>
<td class="tg-0pky">Sepal length(cm)</td>
</tr>
<tr>
<td class="tg-0pky">N</td>
<td class="tg-0pky" id="N_setosa"></td>
<td class="tg-0pky"id="N_versicolor"></td>
<td class="tg-0pky"id="N_virginica"></td>
<td class="tg-0pky"id="N_total"></td>
</tr>
<tr>
<td class="tg-0pky">Min</td>
<td class="tg-0pky" id="min_setosa"></td>
<td class="tg-0pky"id="min_versicolor"></td>
<td class="tg-0pky"id="min_virginica"></td>
<td class="tg-0pky"id="min_total"></td>
</tr>
<tr>
<td class="tg-0pky">Max</td>
<td class="tg-0pky" id="max_setosa"></td>
<td class="tg-0pky"id="max_versicolor"></td>
<td class="tg-0pky"id="max_virginica"></td>
<td class="tg-0pky"id="max_total"></td>
</tr>
<tr>
<td class="tg-0pky">Median</td>
<td class="tg-0pky" id="median_setosa"></td>
<td class="tg-0pky"id="median_versicolor"></td>
<td class="tg-0pky"id="median_virginica"></td>
<td class="tg-0pky"id="median_total"></td>
</tr>
<tr>
<td class="tg-0pky">Mean</td>
<td class="tg-0pky" id="mean_setosa"></td>
<td class="tg-0pky"id="mean_versicolor"></td>
<td class="tg-0pky"id="mean_virginica"></td>
<td class="tg-0pky"id="mean_total"></td>
</tr>
<tr>
<td class="tg-0pky">standard deviation </td>
<td class="tg-0pky" id="sd_setosa"></td>
<td class="tg-0pky"id="sd_versicolor"></td>
<td class="tg-0pky"id="sd_virginica"></td>
<td class="tg-0pky"id="sd_total"></td>
</tr>
<tr>
<td class="tg-0pky">Sepal length(%)</td>
</tr>
<tr>
<td class="tg-0pky"> < 5 </td>
<td class="tg-0pky" id="first_setosa"></td>
<td class="tg-0pky" id="first_versicolor"></td>
<td class="tg-0pky" id="first_virginica"></td>
<td class="tg-0pky" id="first_total"></td>
</tr>
<tr>
<td class="tg-0pky"> >= 5 AND < 6</td>
<td class="tg-0pky" id="second_setosa"></td>
<td class="tg-0pky"id="second_versicolor"></td>
<td class="tg-0pky"id="second_virginica"></td>
<td class="tg-0pky"id="second_total"></td>
</tr>
<tr>
<td class="tg-0pky">>=6 AND < 7 </td>
<td class="tg-0pky" id="third_setosa"></td>
<td class="tg-0pky"id="third_versicolor"></td>
<td class="tg-0pky"id="third_virginica"></td>
<td class="tg-0pky"id="third_total"></td>
</tr>
<tr>
<td class="tg-0pky">>= 7</td>
<td class="tg-0pky" id="fourth_setosa"></td>
<td class="tg-0pky"id="fourth_versicolor"></td>
<td class="tg-0pky"id="fourth_virginica"></td>
<td class="tg-0pky"id="fourth_total"></td>
</tr>
<tr>
<td class="tg-0pky">Sepal width(cm)</td>
</tr>
<tr>
<td class="tg-0pky">N</td>
<td class="tg-0pky" id="N_setosaW"></td>
<td class="tg-0pky" id="N_versicolorW"></td>
<td class="tg-0pky" id="N_virginicaW"></td>
<td class="tg-0pky" id="N_totalW"></td>
</tr>
<tr>
<td class="tg-0pky">Min</td>
<td class="tg-0pky" id="min_setosaW"></td>
<td class="tg-0pky" id="min_versicolorW"></td>
<td class="tg-0pky" id="min_virginicaW"></td>
<td class="tg-0pky" id="min_totalW"></td>
</tr>
<tr>
<td class="tg-0pky">Max</td>
<td class="tg-0pky" id="max_setosaW"></td>
<td class="tg-0pky" id="max_versicolorW"></td>
<td class="tg-0pky" id="max_virginicaW"></td>
<td class="tg-0pky" id="max_totalW"></td>
</tr>
<tr>
<td class="tg-0pky">Median</td>
<td class="tg-0pky" id="median_setosaW"></td>
<td class="tg-0pky" id="median_versicolorW"></td>
<td class="tg-0pky" id="median_virginicaW"></td>
<td class="tg-0pky" id="median_totalW"></td>
</tr>
<tr>
<td class="tg-0pky">Mean</td>
<td class="tg-0pky" id="mean_setosaW"></td>
<td class="tg-0pky" id="mean_versicolorW"></td>
<td class="tg-0pky" id="mean_virginicaW"></td>
<td class="tg-0pky" id="mean_totalW"></td>
</tr>
<tr>
<td class="tg-0pky">standard deviation </td>
<td class="tg-0pky" id="sd_setosaW"></td>
<td class="tg-0pky" id="sd_versicolorW"></td>
<td class="tg-0pky" id="sd_virginicaW"></td>
<td class="tg-0pky" id="sd_totalW"></td>
</tr>
<tr>
<td class="tg-0pky">Sepal width(%)</td>
</tr>
<tr>
<td class="tg-0pky">
< 3 </td> <td class="tg-0pky" id="first_setosaW">
</td>
<td class="tg-0pky" id="first_versicolorW"></td>
<td class="tg-0pky" id="first_virginicaW"></td>
<td class="tg-0pky" id="first_totalW"></td>
</tr>
<tr>
<td class="tg-0pky"> >= 3 AND < 3.5</td> <td class="tg-0pky" id="second_setosaW">
</td>
<td class="tg-0pky" id="second_versicolorW"></td>
<td class="tg-0pky" id="second_virginicaW"></td>
<td class="tg-0pky" id="second_totalW"></td>
</tr>
<tr>
<td class="tg-0pky">>=3.5 AND < 4 </td> <td class="tg-0pky" id="third_setosaW">
</td>
<td class="tg-0pky" id="third_versicolorW"></td>
<td class="tg-0pky" id="third_virginicaW"></td>
<td class="tg-0pky" id="third_totalW"></td>
</tr>
</table>
<a id="downloadLink" onclick="exportF(this)">Export to excel</a>
</body>
</html>