Python3中Excel文件的处理

  • xlrd读取文件

xlrd是跨平台的,主要示例代码如下:

workbook_object = xlrd.open_workbook(report_path) #打开文件,获取workbook对象
work_sheet = workbook_object.sheet_by_name("Sheet1")#基于sheet名字获取到sheet对象
the_sheet.cell(7,3).ctype#获取单元格的类型

使用work_sheet.nrows获取行数,使用cell_value(i,j)获取某个格子的值

python读取excel中单元格的内容返回的有6种类型:

  • 0 empty
  • 1 string
  • 2 number
  • 3 date
  • 4 boolean
  • 5 error
  • xlwings的使用

根据目前的研究,xlwings很可能是调用了Excel VBA API实现的,代码被调用时打开了Excel程序实例,这也意味着它可以做到更加复杂的操作。部分示例代码如下:

the_workbook=xw.Book(template_path) #打开文件,获取workbook对象
detail_sheet=xw.Sheet("Sheet1") #sheet名字
detail_sheet.range(str(i+6)+':'+str(i+6)).api.Insert()#利用Excel VBA API插入新的行
detail_sheet.range(i+6,j+1).value = the_line[j]#给某个格子填写内容,注意第1个格子A1是1,1
detail_sheet.range('5:5').api.EntireRow.Delete()#删掉一行,此处是删除掉第5行
the_workbook.app.quit()#用这个方法来退出Excel程序,the_workbook.close()只能关掉当前打开的文件
  • xlwt的使用

    在有xlwings的情况下还要用xlwt,主要的原因是:

    • xlwings不支持Linux(Linux下面没有 MS Office)

    • xlwt更加简单

    注意:xlwt目前没有办法通过模板来进行写入,所以落入了下乘

    主要代码示例如下:

style = xlwt.XFStyle() # 初始化样式
font = xlwt.Font() # 为样式创建字体
font.name = 'Times New Roman' 
font.bold = True # 黑体
font.underline = True # 下划线
font.italic = True # 斜体字
style.font = font # 设定样式
worksheet.write(0, 0, 'Unformatted value') # 不带样式的写入
worksheet.write(1, 0, 'Formatted value', style) # 带样式的写入
workbook.save('formatting.xls') # 保存文件

links

social