Python使用openpyxl库修改和合并Excel文档

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python使用openpyxl库修改和合并Excel文档相关的知识,希望对你有一定的参考价值。

参考技术A     先来看看openpyxl库的官方说明:openpyxl is a Python library to read/write Excel 2010 xlsx/xlsm/xltx/xltm files.这个库是针对2010 及以上Excel文档的,笔者测试过2007是会报错的。

    Python使用openpyxl库在实际的应用中可以提高效率。本文分享测试两个案例。

1、修改统计文档数据  

    读取表中数据,计算平均分和总分,并且保存到最后两列,最后再写入到文件中。

2、多文档合并

    这个在实际的生活中可是大有用处。试想一下现在有很多报名表,需要将报名表集中在一起,那么只能一个个打开文档复制粘贴,太低效率了。Python使用openpyxl库就可以很快的完成将目录下的.xlsx文件合并在一起。

    get_all_xlsx_files函数的作用是找到目录下的xlsx文件,并按照文件名进行排序;

    merge_xlsx_files函数的作用是通过获取表中数据,然后调用ws.append函数添加到汇总表的后面。

    main主函数执行合并操作,并写入汇总文件中。

    合并效果如下:

python中使用xlrdxlwt库以及openpyxl库读写excel浅析

本文内容主要是:
1、python中使用xlrd、xlwt库读写excel(xls)浅析
2、python中使用openpyxl库读写excel(xlsx)浅析(亲测推荐使用openpyxl库,解决了问题:ValueError: row index was 65536, not allowed by .xls format )
官方文档

本来这个内容是要写在这篇文章的windows下python3.5安装setuptools以及百度坐标系(bd-09)、火星坐标系(国测局坐标系、gcj02)、WGS84坐标系之间的坐标互转python实现以及python中exce,但是我觉得那篇文章内容太多了,所以就拿出来单独写。

这次我使用python读写excel主要需要的函数功能是,所以我是有目的的去获取这几个函数的使用方法
1、读取excel文件(读函数)
2、获取总的excel行数(获取总行数的函数)
3、行数内遍历获取每一个单元格的数据(获取单元格的函数)
4、写excel文件(写函数)

一、使用xlrd、xlwt库读写excel
xlrd和xlwt处理的是xls文件,单个sheet最大行数是65535,如果有更大需要的,建议使用openpyxl函数,最大行数达到1048576。
如果数据量超过65535就会遇到:ValueError: row index was 65536, not allowed by .xls format

1、打开excel

readbook = xlrd.open_workbook(r'\\test\\canying.xlsx')

2、获取读入的文件的sheet

sheet = readbook.sheet_by_index(1)#索引的方式,从0开始
sheet = readbook.sheet_by_name('sheet2')#名字的方式

3、获取sheet的最大行数和列数

nrows = sheet.nrows#行
ncols = sheet.ncols#列

4、获取某个单元格的值

lng = table.cell(i,3).value#获取i行3列的表格值
lat = table.cell(i,4).value#获取i行4列的表格值

5、打开将写的表并添加sheet

writebook = xlwt.Workbook()#打开一个excel
sheet = writebook.add_sheet('test')#在打开的excel中添加一个sheet

6、将数据写入excel

 sheet.write(i,0,result[0])#写入excel,i行0列
 sheet.write(i,1,result[1])

7、记得保存

 writebook.save('answer.xls')#一定要记得保存

整体code:

def read_excel():
  # 打开文件
  readbook = xlrd.open_workbook(r'C:\\Users\\Alan Kong\\Desktop\\经纬度转换\\coordTransform_py-master\\test\\canying.xlsx')
  writebook = xlwt.Workbook()#打开一个excel
  sheet = writebook.add_sheet('test')#在打开的excel中添加一个sheet

  table = readbook.sheets()[0]#获取读入的文件的第一个sheet
  nrows = table.nrows#获取sheet的行数
  #print (nrows)

  for i in range(nrows):
    if i == 0:#我处理的数据第一行是属性名,所以去掉
      continue
    lng = table.cell(i,3).value#获取i行3列的表格值
    lat = table.cell(i,4).value#获取i行4列的表格值
    result = gcj02towgs84(lng,lat)#引用转换函数
    print(i)
    sheet.write(i,0,result[0])#写入excel
    sheet.write(i,1,result[1])

  writebook.save('answer.xls')#一定要记得保存

二、使用openpyxl库读写excel

1、打开excel

filename = r'\\shenghuo.xlsx'
inwb = load_workbook(filename)#读文件

2、获取打开的excel的sheet内容

sheetnames = inwb.get_sheet_names()#获取读文件中所有的sheet,通过名字的方式
ws = inwb.get_sheet_by_name(sheetnames[0])#获取第一个sheet内容

3、获取sheet的最大行数和列数

rows = ws.max_row#获取读取的excel的文件的行数

4、获取某个单元格的值

lng = ws.cell(row = i+1 , column = 4).value#读文件
lat = ws.cell(row = i+1 , column = 5).value

5、打开将写的表并添加sheet

 outwb = Workbook()#打开一个将写的文件
 outws = outwb.create_sheet(title="cool")#在将写的文件创建sheet

6、将数据写入sheet

 outws.cell(row = i+1 , column = 1).value = result[0]#写文件
 outws.cell(row = i+1 , column = 2).value = result[1]

7、记得保存

 outwb.save('answer.xlsx')#一定要记得保存

整体来一个:


def read_excel():
  filename = r'C:\\Users\\user\\Desktop\\coordTransform_py-master\\test\\shenghuo.xlsx'
  inwb = load_workbook(filename)#读文件
  outwb = Workbook()#打开一个将写的文件
  outws = outwb.create_sheet(title="cool")#在将写的文件创建sheet
  sheetnames = inwb.get_sheet_names()#获取读文件中所有的sheet,通过名字的方式
  ws = inwb.get_sheet_by_name(sheetnames[0])#获取第一个sheet内容
  rows = ws.max_row#获取读取的excel的文件的行数
  print(rows)

  for i in range(rows):

    lng = ws.cell(row = i+1 , column = 4).value#读文件
    lat = ws.cell(row = i+1 , column = 5).value

    result = gcj02towgs84(lng,lat)#引用函数
    print(i)
    outws.cell(row = i+1 , column = 1).value = result[0]#写文件
    outws.cell(row = i+1 , column = 2).value = result[1]

  outwb.save('answer.xlsx')#一定要记得保存

分享一个照片

以上是关于Python使用openpyxl库修改和合并Excel文档的主要内容,如果未能解决你的问题,请参考以下文章

如何用Python合并excel表中的重复内容

机器学习之数据预处理,Pandas读取excel数据

5 分钟掌握 openpyxl 操作:Python 轻松处理 Excel

5 分钟掌握 openpyxl 操作:Python 轻松处理 Excel

Python3 读取和写入excel xlsx文件 使用openpyxl

Python 技术篇 - 操作excel实现单元格合并并居中实例演示,用openpyxl库为指定区域的单元格设置对齐样式和字体样式方法