2010-03-23 153 views
8

我用Python來生成一個CSV文件。但是,當我在Excel中打開它時,如果可以轉換,Excel會自動將一個字符串識別爲數字。如何禁用Excel的數字和文本的自動識別

例如33E105變爲33*10^105,這實際上是一個ID,而不是一個數字。

如何在打開CSV文件時在Excel中禁用此功能?或者我需要求助於一個excel-python庫來輸出一個excel文件並指定自己的格式?

我還發現了一個similar question沒有很好的答案在網絡上。

謝謝!

回答

1

要使用Python編寫實際的.xls文件,而不是.csv那些Excel可能會誤解的文件,可以使用xlwt第三方Python軟件包。

+0

我終於使用了xlwt,它也解決了一些小問題,如格式,寬度,第一行的凍結等。 – 2010-03-23 12:51:51

2

我想你可以把一個'在前面停下數字串正在變成整數

EG。

...,"'33E105",... 

的OpenXML是一種更爲靈活(複雜)的選項,但只適用於Office2003的或更新,是大材小用了這個問題。更適合需要突出顯示單元格/多個工作表等的案例。

+0

@gnibbler是正確的,你前綴一個撇號作爲文字對待。 – Mikos 2010-03-23 01:45:15

4

您可以在它之前加上單引號,將其強制爲文本。

一個有趣的答案是你可以保留前八行爲空(它只處理前八行來確定數據類型),儘管我認爲這可能會完全清空所有數據。您可以隱藏這些空行。

3

你有3種選擇:

  • 輸出Excel可以讀取一個特殊格式的XML文件。我不記得任何細節,但如果感興趣,我可以挖掘它們。我們用我們的Perl代碼來做到這一點。我不知道excel-python是否可以做到這一點。

  • 在每個串之前放置'(撇號)。

  • 使用以適當的格式輸出本機Excel文件的庫。沒有線索,如果這樣的Python存在,但它在任何情況下都是第一個選項的矯枉過正變體。

+0

我試過''',但是所有的ID都會有一個前導'''。 – 2010-03-23 01:50:09

+0

如果你需要字符串本身來包含前導'''''' – DVK 2010-03-23 01:53:09

+0

謝謝,領導''''會爲你做。我用','456607950,'和',''456607950','都給了我一個領先的''',我不想要。 – 2010-03-23 01:56:16

0

如果您不想改變如何編寫CSV文件,您可以使用Excel中的文本導入嚮導來指定如何處理各個列。嚮導中有一個步驟可讓您選擇每列中的數據類型。設置你想要的文本列,並將其視爲一個字符串。

相關問題