我想通过从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格式告诉我这是一个数字
谢谢您的帮助。
答案 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'
最后一行代码可确保将其格式化为数字。完成上述更改后,别忘了保存文件。