2012-02-07 6 views
0

J'écris une application qui fonctionnera dans un navigateur Webkit. J'en ai besoin pour prendre les données stockées localement sur l'appareil et les exporter au format .csv. Est-ce possible en utilisant javascript? Cela devrait être fait dans le navigateur. Php n'est pas une option. MerciComment exporter le code SQL Web vers un fichier .CSV

+0

Voulez-vous dire la base de données Web SQL? 'window.openDatabase()'? –

+0

Oui c'est ce que je voulais dire. http://www.w3.org/TR/webdatabase/ – Tim

Répondre

0

En supposant que le fichier sqlite se trouve sur le serveur (nous ne parlons pas de stockage local, n'est-ce pas?), Vous devrez toujours accéder au serveur de fichiers.

+0

Je parle de stockage SQL dans le navigateur. Voici un lien. http://www.w3.org/TR/webdatabase/ – Tim

1

Vous pouvez le faire, mais vous devrez sérialiser votre javascript en csv à la main. Vous devrez également décider quel dialecte CSV utiliser. Vous trouverez ci-dessous une possibilité (non testée) qui montre le motif général que vous devez utiliser.

function csvQuoteCell(cell, quotechar, sepchar) { 
    // quote cells containing sepchar and double quote chars 
    // this is an excel dialect 
    var quoted = cell; 
    if (cell.indexOf(sepchar)!==-1) { 
     if (cell.indexOf(quotechar)!==-1 { 
      quoted = quoted.replace(quotechar, quotechar+quotechar); 
     } 
     quoted = quotechar+quoted+quotechar; 
    } 
    return quoted; 
} 
function array2csv(ar, quotechar, sepchar) { 
    var quoted = []; 
    for (var i=0;i<ar.length;i++) { 
     quoted.push(csvQuoteCell(ar[i], quotechar, sepchar); 
    } 
    return quoted.join(sepchar); 
} 

var db = openDatabase('mydb','1.0','thedatabase',1024*1024); 
db.readTransaction(function(tx){ 
    tx.executeSql('SELECT col1, col2, col3 FROM thetable', [], function(tx, results){ 
     var quotechar = '"'; 
     var sepchar = ','; 
     var row, rowarray, csvstring; 
     var csvs = []; 
     var fieldnames = ['col1','col2','col3']; 
     // this is the header row 
     csvs.append(array2csv(fieldnames, quotechar, sepchar)); 
     for (var i=0; i<results.rows.length; i++) { 
      row = results.rows.item(i); 
      // you need to make sure you have an explicit order for the csv 
      // row is an object with unordered keys! 
      rowarray = []; 
      for (var j=0;j<fieldnames.length;j++) { 
       rowarray.push(row[fieldnames[j]]); 
      } 
      csvs.push(array2csv(rowarray, quotechar, sepchar)); 
     } 
     csvstring = csvs.join('\r\n'); 
     // csvstring should now contain a multirow csv string 
    }); 
}); 

Cependant, il est probablement impossible de « télécharger » ce fichier de javascript au système de fichiers local, pour le télécharger sur un serveur. En fonction de votre environnement de navigateur exact, vous pouvez utiliser le très brouillon FileWriter api, une sorte de shim d'applet flash ou java, ou peut-être une API propriétaire offerte par votre appareil.

+0

Pouvez-vous créer ce fichier puis l'envoyer par ftp? – Tim

+0

Sauf si votre environnement de navigateur a des extensions ftp, très probablement pas. Vous pouvez, cependant, HTTP POST ou PUT assez facilement avec 'XMLHttpRequest'. –

Questions connexes