2015-12-14 14 views
0

我試圖使用openpyxl將CSV轉換爲xlsx。轉換成功,但我注意到數字前面的引號(')。使它成爲字符串而不是數字。由於我是python的新手,你會很感激。使用openpyxl將CSV轉換爲XLSX,但引用來自數字前面

這裏是我使用的代碼:

import os 
import glob 
import csv 
import openpyxl 

for csvfile in glob.glob(os.path.join('.', '*.csv')): 
    wb = openpyxl.Workbook() 
    ws = wb.active 
    with open(csvfile, 'rb') as f: 
     reader = csv.reader(f) 
     for r, row in enumerate(reader, start = 1): 
      for c, val in enumerate(row, start = 1): 
       ws.cell(row = r, column = c).value = val 
    wb.save(csvfile + '.xlsx') 
+0

最有可能的,你有引號字符您的數據。如果他們不應該在那裏,那麼CSV格式不正確。如果CSV不是使用Excel創建/保存的(例如,如果它是使用自制的自定義程序生成的),則可以在調用csv.reader()時調整CSV的方言。如果您不明白我在說什麼,那麼請編輯您的問題以包含來自其中一個CSV文件的一些原始數據。 「生」我的意思是,如果你在記事本中打開它,而不是Excel。 –

回答

0

的最大問題CSV文件是不包含任何數據類型,所以一切是一個字符串。 openpyxl確實提供了可以嘗試和使用的「guess_types」模式,但我強烈建議您根據自己對文件的瞭解,自己進行類型轉換,例如,將第3列和第4列轉換爲整數,將第6列轉換爲浮點數。

FWIW你並不真的需要for c, val in enumerate(row, start=1)你可能只是做ws.append(row)

+0

關於示例主控的一些示例?我有同樣的問題。 – Alexd2

+0

@ Alexd2我不明白你的意思。 –