使用 Python 将 CSV 转换为 Excel

CSV to Excel conversion using Python

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

    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")

您的 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 文件转换第三列中的所有内容:

i[2:] = [float(x) for x in i[2:]]

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

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

如果您还没有定义什么列是浮点数,您可以尝试使用异常处理程序将该值转换为浮点数。 代码可以变成:

reader = csv.reader(f, delimiter=',')
for i in reader:
    try:
        ws.append(float(i))
    except ValueError:
        ws.append(i)

f.close()