将数据导出到Excel

时间:2015-10-04 17:41:26

标签: python excel formatting

这是我的代码:

import xlwt
file = 'C://Users/MM/Desktop/'
wb = xlwt.Workbook()
sh = wb.add_sheet('S1')

d = [['Numbers','4,849,377','736,732','6,731,484']['Money','$43,253','$70,760','$49,774'],['Decnum','1.22','3.45','9.10']]

for row, nums in enumerate(d):
    for col, value in enumerate(nums):
        sh.write(col, row , value)

wb.save(file +'try.xls')
print('Exported')

以下是我想要完成的事情:

1)第一行中的所有内容都需要以粗体和斜体显示。

2)所有列的宽度必须相同(固定)。

3)''' Money'和' Decnum'在Excel中给我一个错误,告诉我将它们转换为带有绿色错误箭头的数字。

4)数据需要居中。

以下是展望

的示例

<img>http://i59.tinypic.com/dgu48.jpg<img>

1 个答案:

答案 0 :(得分:2)

您正在寻找replace()

>>> x = '1,2,3'
>>> x.replace(',', '')
'123'

for row, nums in enumerate(d):
    for col, value in enumerate(nums):
        try:
            value = int(value.replace(',', ''))
        except:
            pass
        sh.write(col, row , value)

样式格式:

style = xlwt.XFStyle()

font = xlwt.Font()
font.bold = True
style.font = font

sh.write(col, row , value, style=style)

<强>总结

style = xlwt.XFStyle()

font = xlwt.Font()
font.bold = True
style.font = font

for row, nums in enumerate(d):
    for col, value in enumerate(nums):
        try:
            value = int(value.replace(',', ''))
        except:
            pass
        if col == 0:
            sh.write(col, row , value, style=style)
        else:
            sh.write(col, row , value)

另一种方法是使用 easyxf()

head = xlwt.easyxf('align: horiz center; font: bold 1,')
common = xlwt.easyxf('align: horiz center;')

for row, nums in enumerate(d):
    for col, value in enumerate(nums):
        try:
            value = int(value.replace(',', ''))
        except:
            pass
        if col == 0:
            sh.write(col, row, value, style=head)
        else:
            sh.write(col, row, value, style=common)

宽度&amp;高地

添加该床上用品wb.save()

import itertools

col_width = 26 * 20   

try:
    for i in itertools.count():
        sh.col(i).width = col_width
except ValueError:
    pass

设置单元格格式

Additional formats

num = xlwt.easyxf('align: horiz center;', '#,##')

if col == 0:
    sh.write(col, row, value, style=head)
else:
    if type(value) is int:
        sh.write(col, row, value, style=num)
    else:
        sh.write(col, row, value, style=common)

完整摘录:

import itertools
import xlwt

wb = xlwt.Workbook()
sh = wb.add_sheet('S1')

d = [['Numbers', '4,849,377', '736,732', '6,731,484'],
     ['Letters', 'a', 'b', 'c'], ['Colors', 'red', 'green', 'yellow']]


head = xlwt.easyxf('align: horiz center; font: bold 1,')
common = xlwt.easyxf('align: horiz center;')
num = xlwt.easyxf('align: horiz center;', '#,##')

for row, nums in enumerate(d):
    for col, value in enumerate(nums):
        try:
            value = int(value.replace(',', ''))
        except:
            pass
        if col == 0:
            sh.write(col, row, value, style=head)
        else:
            if type(value) is int:
                sh.write(col, row, value, style=num)
            else:
                sh.write(col, row, value, style=common)

    col_width = 200 * 20

    try:
        for i in itertools.count():
            sh.col(i).width = col_width
    except ValueError:
        pass

wb.save('tryx.xls')
print 'Exported'