openpyxl将nunmber格式设置为单元格但不起作用

时间:2019-02-02 03:21:27

标签: python csv openpyxl

我想通过从csv文件读取数据来创建Excel。 因此,我在python中使用Openpyxl和CSV。 但是,无论number_format是什么,我在代码中都将csv中的单元格值保留为“文本”格式

from openpyxl import load_workbook
import csv
from openpyxl.styles import numbers

ws= load_workbook('myworkbook.xlsx')    
with open("myfile.csv", "r", newline="", encoding="utf16") as f:
    mydata=csv.reader(f,delimiter='|')
    for row in mydata:
        for col_index,col_data in enumerate(row,3):
            ws.cell(row=new800row_count, column=col_index, value=col_data).number_format = numbers.FORMAT_NUMBER

假设我的csv文件包含800、200、100个数据值。 使用上面的代码后。告诉我该单元格包含以文本形式存储的数字,而不是显示800、200、100,而是实际的excel格式告诉我这是一个数字

谢谢您的帮助。

2 个答案:

答案 0 :(得分:0)

CSV阅读器的用途很简单,它将始终为您提供文本。 Openpyxl也不会隐式进行转换。您需要先将文本转换为数字。例如,在每一行的循环下:

row = [float(cell) if cell.isdigit() else cell for cell in row]

,然后根据需要使用该行。

答案 1 :(得分:0)

遍历数据集,如果其字符串为浮点型,则将数据转换为

str = '1234.0'
data = float(str)
row[col] = data
row[col].number_format = '#,##0.00'

最后一行代码可确保将其格式化为数字。完成上述更改后,别忘了保存文件。