使用Python进行CSV到Excel转换

时间:2016-10-15 18:15:33

标签: python excel csv openpyxl

我编写了一段代码来解析.csv并以excel格式保存数据。 问题是excel中的所有数据都显示为"数字存储为文本"我需要将从第3列开始的数据转换为数字类型,以便我可以使用图表来表示它。 我的表看起来像这样:

    C1     C2       C3
R1  BlaBla          36552.00233102 ...
R2         App1     3484.000000000 ...
R3         App2     3399.000000000 ...
.....................................

这是代码:

f = open("csv_file")
wb = openpyxl.Workbook()
ws = wb.active
reader = csv.reader(f, delimiter=',')
for i in reader:
    ws.append(i)

f.close()
wb.save("excel_file")

3 个答案:

答案 0 :(得分:2)

您的CSV文件是否包含引号中的数字元素?如果是这样,那将导致你所看到的。例如,考虑一下:

import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
for i in [['100', 100]]:
    ws.append(i)    
wb.save("excel_file.xlsx")

str值在Excel中写为文本元素,而int值写为数字。如果您的CSV文件包含

"100", 100

csv会将其解释为字符串和数字。

您可以通过添加:

csv文件转换第3列中的所有内容
i[2:] = [float(x) for x in i[2:]]

到您将i附加到工作簿之前的行。

答案 1 :(得分:1)

如果尚未定义哪个列是浮点数,则可以尝试使用异常处理程序将值转换为float。 代码可能变成:

class

答案 2 :(得分:-3)

我建议使用熊猫 pandas.read_csv和pandas.to_excel