Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python openpyxl将NUMBER格式设置为单元格,但不';行不通_Python_Csv_Openpyxl - Fatal编程技术网

Python openpyxl将NUMBER格式设置为单元格,但不';行不通

Python openpyxl将NUMBER格式设置为单元格,但不';行不通,python,csv,openpyxl,Python,Csv,Openpyxl,我想通过从csv文件中读取数据来创建excel。 因此,我在python中使用Openpyxl和CSV。 但是,无论number\u格式我将csv中的单元格值放在代码中,都保持为“text”格式 from openpyxl import load_workbook import csv from openpyxl.styles import numbers ws= load_workbook('myworkbook.xlsx') with open("myfile.csv", "r",

我想通过从csv文件中读取数据来创建excel。 因此,我在python中使用Openpyxl和CSV。 但是,无论
number\u格式
我将csv中的单元格值放在代码中,都保持为“text”格式

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文件包含800200100个数据值。 在使用我上面的代码之后。它不是以数字格式(excel)显示800200100,而是告诉我这个单元格包含以文本形式存储的数字,甚至实际的excel格式也告诉我它是一个数字


感谢您提前提供的帮助。

CSV reader旨在简单易懂,并始终为您提供文本。Openpyxl也不会隐式地进行转换。您需要先将文本转换为数字。例如,在每行的循环下:

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

然后根据您的意愿使用该行。

CSV reader旨在使其简单,并始终为您提供文本。Openpyxl也不会隐式地进行转换。您需要先将文本转换为数字。例如,在每行的循环下:

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

然后根据需要使用行。

在数据集中循环,如果是字符串,则将数据转换为浮点:

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

最后一行代码确保其格式为数字。在进行上述更改后,不要忘记保存文件。

在数据集中循环,如果是字符串,则将数据转换为浮点:

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

最后一行代码确保其格式为数字。进行上述更改后,不要忘记保存文件。

谢谢。但是,它不起作用。但我注意到,如果我用'F2'按下单个单元格并输入。列将自动转换为数字,因为单元格格式为数字。那么,您知道如何使用python或VBA刷新工作表中的所有单元格吗?谢谢。但是,它不起作用。但我注意到,如果我用'F2'按下单个单元格并输入。列将自动转换为数字,因为单元格格式为数字。那么,您知道如何使用python或VBA刷新工作表中的所有单元格吗?CSV中的所有内容都是字符串,因此您需要将代码中的相关值转换为数字。CSV中的所有内容都是字符串,因此您需要将代码中的相关值转换为数字。