使用JavaScript在csv文件中保留前导零

yebdmbv4  于 2023-09-28  发布在  Java
关注(0)|答案(4)|浏览(152)

我正在使用以下代码下载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文件中前导零的数字。到目前为止,我找到的解决方案是用单引号或双引号将数字 Package 成文本。但这并没有解决问题,因为它还在单元格中打印引号。
有没有一种方法可以保留前导零并打印单元格中没有引号的数字?有什么建议吗?
编辑:我忘了在原来的帖子中提到,我必须在Excel中打开CSV。

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

有没有一种方法可以获取单元格的值并同时显示为01(而不是不同的显示和值)?

pxy2qtax

pxy2qtax1#

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

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

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

pjngdqdw

pjngdqdw2#

<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,它会根据自己的想法和单元格默认值重新设置数字的格式。但是如果您在记事本中查看CSV,您会看到实际文件中的前导0仍然存在。

ktca8awb

ktca8awb3#

你的代码实际工作:

<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>
gdx19jrr

gdx19jrr4#

我有类似的问题与CSV文件,我发现,添加一个领先的TAB字符与数字使它的工作。

let csv = '\t'+'01';

这将保留此前导零,并且Excel将忽略TAB

相关问题