2017-10-26 09:47:03

python操作excel表格

昨天群里有个人找我让帮忙写个脚本处理下excel数据,虽然之前从来没操作过,但是还是答应了。需求很简单,稍微查下资料就搞定了。这里记录下

读使用xlrd,读取出来的数据一行就是一个列表,列表中的第n项(0开始)就是第n+1列。

import xlrd

xls = xlrd.open_workbook(file_name)
sh = xls.sheets()[0] # 读取第一个sheet

for curr_row in range(0, sh.nrows):
        row = sh.row_values(curr_row)

这样就把表里的数据都读取出来了

写使用xlwt,用法也很简单

import xlwt

wb = xlwt.Workbook()
ws = wb.add_sheet('total')  # total是sheet的名字
ws.write(0, 0, 1)           # 第一行,第一列写值1
wb.save('total.xls')        # 保存为total.xls文件

读取合并单元格

import xlrd
xls = xlrd.open_workbook('merge.xls',formatting_info=True)
sh = xls.sheets()[0]

for crange in sh.merged_cells:
    print(crange) # crange是一个四元组:(起始行, 结束行, 起始列, 结束列)

写入合并单元格

import xlwt

wb = xlwt.Workbook()
sheet = wb.add_sheet('total')

sheet.write_merge(0, 1, 0, 1, 'test merge') # (起始行, 结束行, 起始列, 结束列, 值)
sheet.write(2, 0, 1)
sheet.write(2, 1, 2)
wb.save("merge.xls")

控制单元格内容样式

值得注意的是,所有的行都有一个可选的style作为最后的可选参数,例如:

font0 = xlwt.Font()
font0.name = 'Times New Roman'
font0.colour_index = 2
font0.bold = True

style0 = xlwt.XFStyle()
style0.font = font0

style1 = xlwt.XFStyle()
style1.num_format_str = 'D-MMM-YY'

读取excel中的日期格式

excel中有些是日期,如果单纯的读取值它是一个小数,这时候我们需要借助xldate_as_tuple函数来转换一下

def exceldate2string(excel_date):
    tmp = xlrd.xldate_as_tuple(excel_date, 0)
    return "{}{:0>2}{:0>2}".format(tmp[0], tmp[1], tmp[2])

读取csv文件

csv是内置的python包,不用安装,直接导入即可

    import csv

    csv_reader = csv.reader(open('test.csv'))
    csv_g = csv_reader
    next(csv_g)
        for row in csv_g:
            print(row)

Permanent link of this article:http://nulls.cc/post/python_excel

-- EOF --