我使用python将 .csv文件转换为xlsx文件,文件转换成功。同时我也想更改单元格数字类型,就像浮点类型xx.xxxx一样,它将减少到.xx(2位小数)值。
输入test.csv表,由","
分隔Name Date Total request sas rate
rasta777 16062017 387865 89.3456
rasta777 16062017 291293 67.675
rasta777 16062017 256418 100
rasta777 16062017 251558 98.98
我已经使用xlsxwriter
尝试了下面的python脚本,但收到错误。
import os
import glob
import csv
from xlsxwriter.workbook import Workbook
for csvfile in glob.glob(os.path.join('.', 'hourly.csv')):
workbook = Workbook(csvfile + '.xlsx')
worksheet = workbook.add_worksheet()
format = workbook.add_format()
format.set_bold()
format.set_font_color('blue')
format.set_num_format('0x02')
format1 = workbook.add_format({'font_color': 'blue'})
with open(csvfile, 'rb') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for c, col in enumerate(row):
worksheet.write(r, c, col)
worksheet.set_row(0, 20, format)
worksheet.set_column('A:P', format)
workbook.close()
得到错误
" TypeError:*不支持的操作数类型:'格式'和' int'"
我的第二个问题是生成输出(如果我删除worksheet.set_column('A:P', format)
则获取输出)将单元格类型作为文本,而我的数据是除标题之外的所有数值。
答案 0 :(得分:2)
上次我检查XlsxWriter的worksheet
不支持在写入值后更改单元格类型。如果要编写特定类型的值,则必须使用特定于类型的方法编写它,如下所示:
worksheet.write_datetime(idx, fld_idx, fld, date_format)
您还必须在编写时指定格式,我认为事后不可能更改格式。
一般来说,我通过XlsxWriter的经验了解到,最好在编写之前准备好所需的一切,然后用所有正确的值写一次单元格。所以例如在将date_format
写入单元格时,我使用datetime
预定义的常规方法。这很有效。
在此处阅读特定于类型的方法:http://xlsxwriter.readthedocs.io/worksheet.html,特别是:
write_string()
write_number()
write_blank()
write_formula()
write_datetime()
write_boolean()
write_url()