2

次のコードを使用してcsvをダウンロードしています。

<a download="somedata.csv"  id='x'>Download CSV</a>
<script>
       var csv = '01'; //prints 1 in the cell, truncating leading zero
       var csv = "'"+01+"'"; //prints '01' in the cell, with single quote
       var csv = '"\""01"\""'; //prints "01" in the cell, with double quotes
       var a = document.getElementById('x');
       a.href='data:text/csv;base64,' + btoa(csv);
</script>

csv ファイルに先頭にゼロを付けて数値を出力する必要があります。私がこれまでに見つけた解決策は、数値を一重引用符または二重引用符で囲んでテキストにすることです。ただし、セルにも引用符が出力されるため、これでは問題は解決しません。

先頭のゼロを保持し、セルに引用符なしで数値を出力する方法はありませんか? 助言がありますか?

編集: 元の投稿で、csv を Excel で開く必要があることを忘れていました。

var csv = "'01";   //prints '01 in the cell
var csv = '="01"'; //prints  01 in the cell, but the value is ="01"

セルの値を取得して両方を 01 として表示する方法はありませんか (表示と値が異なるのではなく)。

4

3 に答える 3

2

あなたのコードは実際に機能します:

<a download="somedata.csv"  id='x'>Download CSV</a>
<script>
       var csv = '01';
       var a = document.getElementById('x');
       a.href='data:text/csv;base64,' + btoa(csv);
</script>

このファイルをテキストエディタで開くと、先行ゼロが表示されます。

特にMicrosoftExcelを対象としている場合は、先行ゼロを保持するために先行ゼロ引用符を追加できます。ただし、各セルを入力してEnterキーを押すと、有効になります。

<a download="somedata.csv"  id='x'>Download CSV</a>
<script>
       var csv = "'01";
       var a = document.getElementById('x');
       a.href='data:text/csv;base64,' + btoa(csv);
</script>

より複雑ですが、機能します(これもExcelでのみ)

<a download="somedata.csv"  id='x'>Download CSV</a>
<script>
       var csv = '="01"';
       var a = document.getElementById('x');
       a.href='data:text/csv;base64,' + btoa(csv);
</script>
于 2012-12-11T09:27:13.687 に答える
2
<a download="somedata.csv"  id='x'>Download CSV</a>
<script>
       var csv = '01';
       var a = document.getElementById('x');
       a.href='data:text/csv;base64,' + btoa(csv);
</script>

これはそのままで問題なく動作します。

Excel で CSV を表示していると思います。Excel は、その気まぐれとセルの既定値に従って数値を再フォーマットします。しかし、メモ帳で CSV を見ると、先頭0が実際のファイルに残っていることがわかります。

于 2012-12-11T09:24:01.657 に答える