Python:如何使用xlsxwriter更改单元格num类型

时间:2017-07-13 09:37:18

标签: python python-2.7 xlsxwriter

我使用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)则获取输出)将单元格类型作为文本,而我的数据是除标题之外的所有数值。

1 个答案:

答案 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()