Dans ma request, j'ai une list d'articles pouvant être exportés vers CSV.
Pour cela, je crée un Blob comme suit:
var BOM = "\ufeff"; var blob = new Blob([csv], { type: 'csv;charset=utf-8' });
Dans le cas où datatables de cette list contiennent des caractères spéciaux, le file exporté n'a pas été ouvert correctement dans MS Excel. J'ai donc ajouté une ligne à mon code (la deuxième ligne de l'extrait suivant), comme je l'ai trouvé dans de nombreux forums de Q & A:
var BOM = "\ufeff"; var csv = BOM + csv; var blob = new Blob([csv], { type: 'csv;charset=utf-8' });
var BOM = "\ ufeff";var BOM = "\ufeff"; var csv = BOM + csv; var blob = new Blob([csv], { type: 'csv;charset=utf-8' });
var csv = BOM + csv;var BOM = "\ufeff"; var csv = BOM + csv; var blob = new Blob([csv], { type: 'csv;charset=utf-8' });
var blob = new Blob ([csv], {var BOM = "\ufeff"; var csv = BOM + csv; var blob = new Blob([csv], { type: 'csv;charset=utf-8' });
tapez: 'csv; charset = utf-8'var BOM = "\ufeff"; var csv = BOM + csv; var blob = new Blob([csv], { type: 'csv;charset=utf-8' });
Cela fonctionne: le CSV est ouvert correctement dans Excel, mais lors de la sauvegarde du file, il est sauvegardé au format de text et non comme CSV. Ce qui signifie que j'ai besoin de "Enregistrer sous" le file et de modifier le type par défaut si je veux qu'il soit enregistré correctement.
Est-ce vraiment comme ça? Dois-je choisir entre les deux options: voir le file ou l' save correctement?
Oui, c'est dommage, mais c'est vraiment comme ça. À partir d' Excel
un CSV
est codé ANSI
par défaut et il n'y a pas de possibilité directe d'save CSV
dans n'importe quel encoding unicode. Microsoft
suggère d'utiliser le Notepad
pour modifier l'enencoding. Reportez-vous à la section Comment save un carnet d'adresses dans un file CSV en utilisant le format d'enencoding UTF-8 afin que le file CSV puisse être importé dans Windows Mail . Voir aussi Comment puis-je save un csv avec un encoding utf-8 à l'aide d'Excel 2013?
Seule une autre possibilité consiste à utiliser VBA
et à créer le file CSV
en utilisant ADODB.Stream
ou Scripting.FileSystemObject
.
Comment utiliser ADODB.Stream
pour créer un file CSV
encodé unicode est déjà répondu plusieurs fois. Par exemple: comment exporter Excel vers un file csv avec "|" délimité et utf-8 code . Modifiez simplement le délimiteur "|" à ",". C'est l'approche basique. Peut-être que vous devez l'étendre pour fournir un délimiteur de text également, si le délimiteur peut faire partie des données.
Utilisation de la méthode CreateTextFile de Scripting.FileSystemObject
est plus simple, mais ne permet qu'à Unicode
qui est UTF-16LE plutôt que UTF-8.