Je peux télécharger et convertir des fichiers CSV en lecteur API sans aucun problème, mais lors de l'envoi de XLS (rendu avec poire XLS-Writer) ou XLSX (rendu avec PHPExcel), l'API de lecteur se plaint:
"Error calling POST https://www.googleapis.com/upload/drive/v2/files?convert=true&uploadType=multipart&key=123: (500) Internal Error"
3 Réponses :
Vous pouvez télécharger vos documents Excel sur Google Drive à l'aide de l'application ou du SDK de Google Drive, mais je ne pense pas que Google fournisse un moyen de convertir les fichiers. P>
pourrait être utile de suggérer la conversion de fichiers à l'équipe de Google? Je n'ai jamais vu le besoin pour cela personnellement que Excel fonctionne bien. P>
Mon intention est d'obtenir un aperçu multi-pages dans un navigateur Web ... et CSV ne prend en charge qu'une seule dimension. Leur application Web le supporte, mais vraiment pas sûr de l'API, puisque la réponse HTTP500 pourrait être n'importe quoi. L'application de bureau ou le SDK n'est pas une option - il n'y a qu'une seule API de lecteur disponible dans un environnement Web.
Ne pouviez-vous pas convertir CSV en XLS / XLSX et télécharger cela dans Google Drive pour obtenir un aperçu de plusieurs pages?
Ou (comme une approche complètement différente) si vous êtes après un aperçu multi-pages, vous pouvez essayer d'utiliser PHP pour convertir le CSV en PDF ...
Je ne veux pas pdf et CSV ne suffisent pas, comme il s'est avéré.
Sur la dernière partie des approches alternatives, vous pouvez simplement utiliser l'API de feuille de calcul pour écrire directement dans la feuille de calcul https://developers.google.com/google-apps/spreadsheets/ . Cela peut vous donner un effet secondaire bénéfique des mises à jour incrémentielles. P>
par exemple. p>
Je peux créer plusieurs révisions sur l'API du lecteur. Mais c'est probablement le moindre effort pour insérer ce réseau multidimensionnel - chaque lien hypertexte par boucle Narding :) - Une fois que j'ai une feuille de gsheet, qui peut être exportée vers Excel . Acceptera cette réponse, si je peux insérer des feuilles / rangées sur le wrapper Google-API. Got Curl installé aussi bien, je pense.
Si je peux insérer et convertir avec développeurs.google.com/google-apps/documents-list < / a> Liste de documents API, ce serait plus approprié que d'écrire la ligne par ligne. Va tester aujourd'hui ce qui est accessible et travailler.
Le plus rapide était de rendre la matrice à Excel 2007 et d'installer simplement une application Google Drive sur les ordinateurs de bureau pour accéder aux données. Les feuilles de calcul API ne peuvent pas créer de documents, doivent le faire avec Docs API; Actuellement, le wrapper API pour PHP ne prend pas en charge ces deux points d'extrémité - comme celui-ci, je peux également révision des fichiers. Effort opportun: 1h.
Mise à jour: lorsque je rends XLSX avec Excel2007, la conversion échoue. Lorsque j'ouvre le même fichier avec MS-Excel et "Enregistrer sous" - je peux le convertir même sur l'API d'entraînement. P>
J'ai remarqué des choses lors de la décollage des fichiers et comparé: p> a) MS-Excel utilise des valeurs '0/1' au lieu de «FALSE / TRUE» P>
B) Répertoire 'XL / Feuilles de calcul / _Rels' a été supprimée (peut-être inutile?). P>
c) Les fins de ligne des XMLâ sont converties d'UNIX en DOS. P>
d) MS-Excel a ajouté toutes les cellules vides au XML - que PHPEXCEL n'a pas écrit. p>
e) Les identifiants de relation semblent être déplacés ... Il existe un certain nombre de calculs +3 dans le code ?? p>
Le problème est que le format de fichier généré ne correspond pas au lecteur. Xml-analyseur d'API. P>
Je ne suis toujours pas vraiment sûr de ce qui ne va pas avec le format de fichier généré, mais corriger le fichier XLSX rendu avec des fichiers XML créés de manière native par MS-Excel, il fonctionne: P>
/* how-to patch the generated XLSX: */ $zip = new ZipArchive(); $zip->open($xlsx_path); $zip->extractTo($export_dir.'temp'); $zip->close(); $this->deleteDir($export_dir.'temp/xl/worksheets/_rels'); $files =array( '_rels/.rels', 'docProps/app.xml', 'docProps/core.xml', 'xl/workbook.xml', 'xl/_rels/workbook.xml.rels', 'xl/theme/theme1.xml' ); foreach($files as $file){ copy($export_dir.'template/'.$file, $export_dir.'temp/'.$file); } unlink($xlsx_path); if($zip->open($xlsx_path, ZIPARCHIVE::CREATE)) { $source = str_replace('\\', '/', realpath($export_dir.'temp')); if(is_dir($source) === true) { $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST); foreach ($files as $file) { $file = str_replace('\\', '/', $file); if(in_array(substr($file, strrpos($file, '/')+1), array('.', '..')) ){continue;} $file = realpath($file); if(is_dir($file) === true){$zip->addEmptyDir(str_replace($source . '/', '', $file . '/'));} else if(is_file($file) === true){ $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file)); } } } else if(is_file($source) === true) { $zip->addFromString(basename($source), file_get_contents($source)); } $zip->close(); }
Récemment, j'ai participé à une enquête et j'ai utilisé la chance de signaler certaines des questions que j'ai rencontrées; Espérons qu'elles ajouteront un peu plus d'erreurs de validation de fichier parlant que de http500.
Mise à jour: Les versions réelles de PHPExcel en combinaison avec l'API d'entraînement Convertir en Gsheet sans la nécessité de corriger le paquet Excel (au moins pour moi). Heureux qu'ils ont réparé cela (sans savoir qui c'était).
Quelques éclaircissements: - 1. Dites-vous que exactement le même fichier peut être téléchargé / converti via l'interface Web, mais échoue 50 via API? Si tel est le cas, vérifiez que votre codage de base64 est correct. 2. Vous pouvez télécharger sans conversion. Que se passe-t-il si vous essayez de "convertir en documents Google" dans l'interface Web?
Si je télécharge un navigateur Web avec conversion - Ça fonctionne, la conversion des fichiers enregistrés sur l'API ne convient pas (la barre de progression est bloquée); J'utilise le wrapper Google-API pour PHP.