Hallo allemaal,
Ik ben al een tijdje op zoek naar een geschikte code om een CSV bestand automatisch om te zetten naar een HTML tabel. Het is voor mijn eigen film database. Ik zou deze graag beter en handzamer willen maken. Ik sla de films in een Excel bestand op, wat natuurlijk eenvoudig is om te zetten naar CSV. Het volgende zou ik graag willen:
Het probleem wat ik heb is voornamelijk het omzetten van CSV naar HTML tabel. Ik heb onderstaande code gevonden hiervoor. Deze werkt echter alleen wanneer hij wordt opgeslagen als .HTA bestand.
Mijn test CSV bestand heeft 3 kolommen per film en er staan 5 films in. Nu heb ik het zover dat de films onder elkaar staan, maar de drie kolommen ook:
Titel: film 1
Jaar: 2000
Genre: Actie
Titel: Film 2
Jaar: 2001
Genre: Thriller
Ik zou het graag als volgt willen:
Films | Jaar | Genre
--------------------------
Film 1 | 2000 | Actie
Film 2 | 2001 | Thriller
Wat moet er in de code worden aangepast hiervoor?
Ik ben al een tijdje op zoek naar een geschikte code om een CSV bestand automatisch om te zetten naar een HTML tabel. Het is voor mijn eigen film database. Ik zou deze graag beter en handzamer willen maken. Ik sla de films in een Excel bestand op, wat natuurlijk eenvoudig is om te zetten naar CSV. Het volgende zou ik graag willen:
- CSV automatisch omzetten naar tabel
- Tabel automatisch aanpassen wanneer CSV is gewijzigd
- Een stijl toekennen aan het geheel
- Soort van tooltip aanmaken met een beschrijving en afbeelding van de film
Het probleem wat ik heb is voornamelijk het omzetten van CSV naar HTML tabel. Ik heb onderstaande code gevonden hiervoor. Deze werkt echter alleen wanneer hij wordt opgeslagen als .HTA bestand.
PHP:
<html>
<head>
<title>Read CSV</title>
<style type="text/css">
body{
margin:50px;
}
.template{
font-family:Verdana,Arial,Times New I2;
font-size:12px;
}
</style>
<script type="text/jscript">
var csvPath='C:\\Users\\Rolf C\\Downloads\\CSV to Table\\csvdb.csv',
separators=['<br>','<hr>','<br>'];
function ADO(){
return new ActiveXObject('ADODB.Connection')
}
String.prototype.folderOf=function(no_slash){
return this.slice(0,this.lastIndexOf('\\',this.length-(/\\$/.test(this)?2:0))+(no_slash?0:1))
};
String.prototype.ext=function(){
return this.slice(this.lastIndexOf('.')+1)
};
String.prototype.isCSV=function(){
var ex=this.ext();
return ex.length==3&&/csv/i.test(ex)
};
String.prototype.fileOnly=function(){
return this.slice(this.lastIndexOf('\\')+1)
};
Date.prototype.shortYear=function(){
return this.getFullYear().toString().slice(2)
};
Date.prototype.monthNumber=function(){
return this.getMonth()+1
};
Number.prototype.twoDigit=function(){
var str=this.toString();
return str.length<2?0+str:str
};
Date.prototype.dayMonthYear=function(){
return this.getDate().twoDigit()+'/'+this.monthNumber().twoDigit()+'/'+this.shortYear()
};
function text_recordSet(ado,file_path,column_headings,delimiter){
try{ado.open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+file_path.folderOf()+";Extended Properties='text;HDR="+(column_headings?'Yes':'No')+";FMT=Delimited("+(delimiter?delimiter:',')+")'")}
catch(e){return e.message}
return ado.execute('select * from ['+file_path.fileOnly()+']')
}
onload=function(){
if(!csvPath.isCSV()){
vb_warning('File must be of type ".csv"','File Type Error');
return 0
}
var ado=ADO(),
rs=text_recordSet(ado,csvPath);
if(typeof rs=='string'){
vb_warning(rs,'CSV File Connection Error');
return 0
}
var seps=separators.length,
n=rs.fields.count,
table=document.body.firstChild,
r=table.rows.length,
txt,
i;
if(r!=n){
vb_warning('The template table contains '+r+' rows.\nThe csv file contains '+n+' fields.\nThese numbers must be the same.\n\nOperation canceled.','Input Error');
return 0
}
rs.moveNext();
while(!rs.eof){
i=0;
while(i<n){
txt=rs.fields.item(i).value;
table.rows[i++].cells[1].firstChild.value=typeof txt!='date'?txt:new Date(txt).dayMonthYear();
}
document.body.appendChild(table);
rs.moveNext();
if(!rs.eof){
i=0;
while(i<seps)document.body.appendChild(document.createElement(separators[i++]));
table=document.body.firstChild.cloneNode(1)
}
}
ado.close()
}
</script>
<script language="vbscript" type="text/vbs">
Function vb_warning(str,title)
MsgBox str,vbOKOnly+vbCritical+vbApplicationModal,title
End Function
</script>
</head>
<body>
<table class="template">
<tr>
<td>Title:</td>
<td><input type="text" size="50" readonly></td>
</tr>
<tr>
<td>Year:</td>
<td><input type="text" size="4" readonly></td>
</tr>
<tr>
<td>Genre:</td>
<td><input type="text" size="20" readonly></td>
</tr>
</table>
</body>
</html>
Titel: film 1
Jaar: 2000
Genre: Actie
Titel: Film 2
Jaar: 2001
Genre: Thriller
Ik zou het graag als volgt willen:
Films | Jaar | Genre
--------------------------
Film 1 | 2000 | Actie
Film 2 | 2001 | Thriller
Wat moet er in de code worden aangepast hiervoor?