我目前正在将文件从csv转换为xlsx。问题是数据默认全部转换为字符串。如何将数字(通常显示为+ 1.500000000E + 009或“+ 1.50000000000E + 009”(前导空格)从字符串转换为数字表示形式)我试过类型转换和常规变通方法,但没有任何效果。 “IF” 语句是因为csv文件具有标题。Python;科学记法字符串编号
def csv_to_excel(csv_path, delimiter, delimiter_txt, excel_path, excel_title):
csv_file = open(csv_path, 'r')
csv.register_dialect(delimiter_txt, delimiter=delimiter)
reader = csv.reader(csv_file, dialect=delimiter_txt)
wb = Workbook()
ws = wb.worksheets[0]
ws.title = excel_title
for row_index, row in enumerate(reader):
for column_index, cell in enumerate(row):
column_letter = get_column_letter((column_index + 1))
if row_index > 3:
ws.cell('%s%s'%(column_letter, (row_index + 1))).value = float(cell)
else:
ws.cell('%s%s'%(column_letter, (row_index + 1))).value = cell
print(cell)
print(type(cell))
wb.save(filename = excel_path)
csv_file.close()
csv_to_excel( 'FILE.CSV', '', '逗号', 'file.xlsx', '数据')
谢谢!任何帮助将是伟大的!
'浮动( '+ 1.50000000000E + 009')'工作 –
看起来你已经在使用'浮动(细胞)'这就是目前的答案是暗示。那它不起作用呢? –
类型转换应该可行 - 正如答案所暗示的那样。难道你的第二个'ws.cell = ...'没有像第一个那样的类型转换操作吗?你有一个'ws.cell ... = float(cell)',另一个只是'ws.cell ... = cell' – MadisonCooper