Hello Everyone,
We are using JavaScript to load the Excel file data onto Forms after the user uploads it. However some Excel files are too large thereby rendering the forms page unresponsive.
document.addEventListener("DOMContentLoaded", function(event){
const jsLink = "https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.16.2/xlsx.full.min.js";
const jqLink = "http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js";
var selectedFile;
let data=[{
"SL.NO":"",
"DESCRIPTION":"",
}];
function loadjsfile(filename, filetype)
{
if (filetype=="js")
{
var fileref=document.createElement('script');
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", filename);
}
if (typeof fileref!="undefined")
{
document.getElementsByTagName("head")[0].appendChild(fileref);
}
}
loadjsfile(jsLink, "js");
function loadjqfile(filename, filetype)
{
if (filetype=="js")
{
var fileref=document.createElement('script');
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", filename);
}
if (typeof fileref!="undefined")
{
document.getElementsByTagName("head")[0].insertAdjacentHTML('afterbegin',fileref);
}
}
loadjqfile(jqLink, "js");
document.getElementById('Field1').addEventListener("change", (event)=>{ //File_Upload
selectedFile = event.target.files[0]; //filename
XLSX.utils.json_to_sheet(data, 'out.xlsx');
if(selectedFile)
{
let fileReader = new FileReader();
fileReader.readAsBinaryString(selectedFile);
fileReader.onload = (event)=>{
let data = event.target.result;
let workbook = XLSX.read(data,{type:"binary"});
console.log(workbook);
workbook.SheetNames.forEach(sheet => {
let rowObject = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheet]);
var table = document.getElementById('q14'); //Table
var exceptionDisplay = document.getElementById('Field28'); //Comments
var j=1;
var count = 0;
for(let i=0;i<rowObject.length;i++)
{
if(j<rowObject.length)
{
$('#q13').click(); // Add row
}
let sNo = table.querySelectorAll('input')[count+0];
let description = table.querySelectorAll('input')[count+1];
for (const key in objectValue = rowObject[i])
{
if(key=="SL.NO")
{
sNo.value = objectValue[key];
}
else if(key=="DESCRIPTION")
{
description.value = objectValue[key];
}
}
count = count + 2;
j++;
}
});
}
}
});
});
Would appreciate insights on this.
Regards,
Aishwarya