我写过一个代码,通过openpyxl将.csv文件(包含数字)导入到excel文件中。它可以工作,但是,所有的单元格都以文本形式将数字写入Excel文件。然后,我必须手动更正Excel中的错误:“数字格式化为文本(在单元的角落显示少许绿色三角形)openpyxl python - 将csv写入excel给'数字格式化为文本'
有没有办法阻止这种情况的发生?它发生在任何csv文件中,即使我只用数字做出来。感谢
#!python2
# Add csv file to an xlsx
import os, csv, sys, openpyxl
from openpyxl import load_workbook
from openpyxl import Workbook
from openpyxl.cell import get_column_letter
#Open an xlsx for reading
wb = load_workbook('Test.xlsx')
ws = wb.get_sheet_by_name("RUN")
dest_filename = "Test_NEW.xlsx"
csv_filename = "csvfile.csv"
#Copy in csv
f = open(csv_filename)
reader = csv.reader(f)
for row_index, row in enumerate(reader):
for column_index, cell in enumerate(row):
column_letter = get_column_letter((column_index + 1))
ws.cell('%s%s'%(column_letter, (row_index + 1))).value = cell
wb.save(filename = dest_filename)
print "new Cashflow created"
***** UPDATE ***
谢谢你,没有什么帮助。我的问题是,我的csv文件有文字的混合物,数字没有任何定义的引号,所以我实现了下面的内容,只要没有呃就把它从一个字符串改成浮点数ROR。
#Copy in csv
f = open(csv_filename,'rb')
reader = csv.reader(f)
for row_index, row in enumerate(reader):
for column_index, cell in enumerate(row):
column_letter = get_column_letter((column_index + 1))
s = cell
try:
s=float(s)
except ValueError:
pass
ws.cell('%s%s'%(column_letter, (row_index + 1))).value = s
这将工作,虽然你可能还想看看'.isnumeric()'和其他字符串方法。但是,我还假设特定列中的所有值都是相同类型的。 –