2012-12-11 80 views
1

我正在使用以下代碼下載csv。使用javascript保留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(而不是不同的顯示和值)?

+0

請說明您已確定前導零被剝離的方式。這個關鍵的因素是,如果我是對的,問題的原因,但你沒有把它包括在你的問題描述中! –

回答

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,根據它的突發事件和單元格默認值重新設置數字的格式。但是,如果您在記事本中查看CSV,則會看到前導0仍然存在於實際文件中。

0

你的代碼實際工作:

<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,您可以添加一個領先的單引號以保留前導零 - 雖然你仍然需要輸入每個單元格和回車鍵,使之生效!:

<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> 
+0

具體而言,這會強制Excel將「單元格」內容視爲文本,而不是將其格式化爲數字。雖然如你所說,這使得文件不可移植。 –

+1

是的 - 我能想到的唯一解決方法是在Excel中工作,而其他任何地方都會有一行標題,然後是一行所有字符串的虛擬數據,然後是第3行的真實數據.Excel向前看確定數據類型時有幾行,所以帶有字符串的數據會強制格式化程序不選擇數字類型。 – Fenton

+0

到目前爲止,我沒有看到需要任何「修復」。 Excel顯示的值是正確的。前導零不具有語義意義。不幸的是,OP沒有解釋他或她關心的原因。 –