Page 1 of 1

Access excel data and display in HTML table

Posted: Sun Sep 11, 2016 3:45 pm
by hiruthere
Hi All,

I am building a web application using HTML5 and Javascript. Need help in the following query

1. Excel contains the data in below format
S.No. Continent Country Capital Population Land Area (sq. mi.)
1 Asia India New Delhi 1,236,344,631 1,147,949
2 Asia Srilanka Colombo 3,23,34,343 70,859

2. In HTML page, there is browse button through which will upload excel file.
3. After importing, following details needs to be displayed in HTML Table
S.No. Continent Country
1 Asia India
2 Asia Srilanka
4. Now whenever I click on any one of the row, for ex. 1 i.e. India, it should display the following details in another HTML table in below format
Header Data
Capital New Delhi
Population 1,236,344,631
Land Area (sq. mi.) 1,147,949

Kindly help me to build above.
Thanks in advance.

Re: Access excel data and display in HTML table

Posted: Sun Sep 18, 2016 7:21 pm
by hiruthere
After doing some R&D, I came across the following code which reads the excel content (Requirement 1 - Till Step 3).. However I need to provide some inputs before converting and its only works in IE as code contains activeX.. Please help me, how to incorporate inputs directly in code instead of input and remove dependency on activeX

Code
<HTML>
<HEAD>
<TITLE>Excel to HTML</TITLE>
<STYLE TYPE="text/css">body div * { font-family: Verdana; font-weight: normal; font-size: 12px; } body { background-color: #E6E6FF; } .tableContainer table { border: 1px solid #000040; } .tblHeader { font-weight: bold; text-align: center; background-color: #000040; color: white; } .oddRow, .evenRow { vertical-align: top; } .tblHeader td, .oddRow td, .evenRow td { border-left: 1px solid #000040; border-bottom: 1px solid #000040; } .lastCol { border-right: 1px solid #000040; } .oddRow { background-color: #C6C6FF; } .evenRow { background-color: #8C8CFF; }</STYLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function _ge(id) { return document.getElementById(id); }
function _nc(val) { return (val != null && val.length > 0); }

function convert2HTML() {
var fo = _ge('txtFilePath');
var so = _ge('txtSheetName');
var ho = _ge('txtHeaderRowStart');
var co = _ge('txtHeaderColStart');
var hco = _ge('txtHeaderCols');
var ro = _ge('txtDataRows');

if(!(_nc(fo.value) && _nc(so.value) && _nc(ho.value) && _nc(co.value) && _nc(hco.value) && _nc(ro.value)) ) {
alert('All the fields are mandatory.');
return false;
}

var ex;
try {
ex = new ActiveXObject("Excel.Application");
}
catch (e)
{
alert('Your browser does not support the Activex object.\nPlease switch to Internet Explorer.');
return false;
}
var ef = ex.Workbooks.Open(fo.value,true);
var es = ex.Worksheets(so.value);
var rs = parseInt(ho.value,10);
var cs = parseInt(co.value,10);
var ce = cs + parseInt(hco.value,10) - 1;
var re = rs + parseInt(ro.value,10);

var oc = _ge('tableContainer');
oc.innerHTML = '';
var tbl = document.createElement('TABLE');
tbl.id = 'tblExcel2Html';
tbl.border = '0';
tbl.cellPadding = '4';
tbl.cellSpacing = '0';
oc.appendChild(tbl);
var i,j,row,col,r,c;

for(i = rs, r = 0; i <= re; i++,r++) {
row = tbl.insertRow(r);
row.className = (i == rs) ? 'tblHeader' : (i % 2 == 0) ? 'evenRow' : 'oddRow';
for(j = cs, c = 0; j <= ce; j++,c++) {
col = row.insertCell(c);
col.className = (j == ce) ? 'lastCol' : '';
col.innerHTML = es.Cells(i,j).value || ' ';

}
}
_ge('btnGetSrc').style.display = '';
}

function toggleSrc() {
if(_ge('tableContainer').style.display == '') {
getHTMLSrc();
}
else {
back2Table();
}
}

function getHTMLSrc() {
var oc = _ge('tableContainer');
var tx = _ge('txtOutput');
var so = document.getElementsByTagName('style');
var str = '<html><body>' + oc.outerHTML + so[0].outerHTML + '</body></html>';
tx.value = str;
oc.style.display = 'none';
_ge('divOutput').style.display = '';
}

function copy2Clipboard() {
var tx = _ge('txtOutput');
window.clipboardData.setData("Text",tx.value);
}

function resetFields() {
window.location.reload();
}

function back2Table() {
_ge('divOutput').style.display = 'none';
_ge('btnGetSrc').style.display = '';
_ge('tableContainer').style.display = '';
}

function numberOnly(obj) {
obj.value = obj.value.replace(/[^0-9]*/,'');
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<h2>Excel to HTML table conversion utility</h2>
<div id="ExcelDetails">
<table border="0" width="100%">
<tr>
<td>Absolute Path of Excel file to read</td>
<td>:</td>
<td><INPUT TYPE="file" ID="txtFilePath" value=""></td>
<td>ID of the Sheet to read</td>
<td>:</td>
<td><INPUT TYPE="text" ID="txtSheetName" value=""></td>
</tr>
<tr>
<td>Header Row Start at</td>
<td>:</td>
<td><INPUT TYPE="text" ID="txtHeaderRowStart" value="" onblur="numberOnly(this)"></td>
<td>Header Column Start at</td>
<td>:</td>
<td><INPUT TYPE="text" ID="txtHeaderColStart" value="" onblur="numberOnly(this)"></td>
</tr>
<tr>
<td>Total Header Columns Count</td>
<td>:</td>
<td><INPUT TYPE="text" ID="txtHeaderCols" value="" onblur="numberOnly(this)"></td>
<td>Total Data Rows Count</td>
<td>:</td>
<td><INPUT TYPE="text" ID="txtDataRows" value="" onblur="numberOnly(this)"></td>
</tr>
<tr>
<td colspan="6" align="CENTER"><INPUT TYPE="button" VALUE="Convert to HTML" ONCLICK="convert2HTML()"></td>
</tr>
</table>


</br></div>
<INPUT TYPE="button" VALUE="Toggle HTML View / Source" style="display: none;" id="btnGetSrc" ONCLICK="toggleSrc()">


<div id="divOutput" style="display: none; height: 50%;">
<TEXTAREA ID="txtOutput" style="width:100%; height: 100%;"></TEXTAREA>


<center>
<INPUT TYPE="button" VALUE="Copy to Clipboard" ONCLICK="copy2Clipboard()">
<INPUT TYPE="button" VALUE="Reset All" ONCLICK="resetFields()">
</center>
</br></div>
<div id="tableContainer"></div>
</BODY>
</HTML>
</br>

Re: Access excel data and display in HTML table

Posted: Mon Sep 19, 2016 1:03 am
by FourthWorld
Interesting in its way, but what does this have to do with LiveCode?