2016-06-09 407 views
1

我是一个新的程序员,所以请裸照我。openpyxl - 将一列转换为数字

我有一个程序,我正在建设 - 它要求一个CSV文件,并将其保存在Excel中。我有一列是货币 - $ 10.00 - 我可以将其他单元格转换为我的代码编号,但我假设因为在它没有转换的数字之前有一个'$'。我怎样才能解决这个问题只是这一个栏 - 感谢

def open_csv(): 
from tkinter import Tk 
from tkinter.filedialog import askopenfilename 
import csv 
from openpyxl import Workbook 
from openpyxl.cell import get_column_letter 

Tk().withdraw() 
filename = askopenfilename() 

open_rawdata = open(filename, 'r') 

csv.register_dialect('commas', delimiter=',') 

reader = csv.reader(open_rawdata, dialect='commas') 

wb = Workbook() 
dest_xls = r'C:\Users\sparkis\Desktop\WeeklyReport.xlsx' 

ws = wb.worksheets[0] 
ws.title = "TEST TITLE" 

for row_index, row in enumerate(reader): 
    for column_index, cell in enumerate(row): 
     column_letter = get_column_letter((column_index + 1)) 
     s = cell 
     try: 
      s = float(s) 
     except ValueError: 
      pass 

     ws.cell('%s%s'%(column_letter, (row_index + 1))).value = s 



wb.save(filename = dest_xls) 

回答

1

在CSV文件所有值是字符串。 openpyxl工作簿有一个option that will let them do type inference,但您更好地管理自己的转换,在这种情况下,添加一个适当的数字格式。

假设它是您输入的第四列需要转换为数字。沿着这条线应该工作。

for idx, row in enumerate(reader, 1): 
    row[3] = row[3][1:] # strip $ 
    ws.append(row) 
    ws.cell(idx, 4).number_format = "$"