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 文件中打印带有前导零的数字。到目前为止,我找到的解决方案是通过用单引号或双引号将数字包装成文本。但这并不能解决问题,因为它也在单元格中打印引号。

没有办法保留前导零并在单元格中打印不带引号的数字吗?有什么建议么?

编辑:我忘了在原始帖子中提到我必须在 Excel 中打开 csv。

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>

This works just fine as it is.

I imagine that you're viewing the CSV in Excel, which re-formats the number according to its whims and to cell defaults. But if you look at the CSV in Notepad, you'll see that the leading 0 is still there in the actual file.

于 2012-12-11T09:24:01.657 回答
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>

如果您在文本编辑器中打开此文件,则会出现前导零。

如果您专门针对 Microsoft Excel,则可以添加前导单引号以保留前导零 - 尽管您仍然需要输入每个单元格并按 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

我知道这是一个老问题,但我最近遇到了这个问题,并通过在末尾添加零宽度空格字符来修复它,如下所示:

var csv = '01' + String.fromCharCode(8203);

我希望它能帮助遇到这个问题的其他人。

于 2019-04-04T13:05:22.087 回答