项目周报汇报的时候要做数据汇总,总是要从不同的excel文件中去获取数据最后汇总到一个excel表里面,所以决定用python直接写个自动化脚本来自动执行。

用python来读写excel,目前找了2个方法:win32com.client和openpyxl

win32com.client可以对excel进行各种操作,可以调用VBA的库,相当于是模拟用户对excel进行操作,在执行过程中,你可以看到excel被打开,然后数据被写入,最后excel文件被关闭等等过程。(文档也可以参看OFFICE自带的VBA EXCEL 帮助文件(VBAXL.CHM)。这里面讲述了EXCEL VBA的编程概念, 另外,《Python Programming on Win32》书中也有很详细的介绍。这本书中(第九章)给出了一个类来操作EXCEL 文件,可以很容易的加以扩展。)
openpyxl是处理excel2007/2010及以后的格式,也就是xlsx系列,如果要处理以前的2003的表格(xls),那么则要用另外的库(xlrd/xlwt等)。
python虽然并不是特别在意大小写,但是使用win32com.client一定要注意大小写,很多函数如果不区分大小写,是无法调用的,比如打开excel表格的Open函数,’O’必须大写,还有wb.Save(),‘S’也必须大写,而我们使用openpyxl使用小写即可。

openpyxl在保存时用save(),很多原有的格式图表是无法保留下来的,比如对excel进行修改,里边原有的透视表,用openpyxl的save()是无法保存的,但是使用win32com.client的wb.Save()却是可以保存这些图表的,这也是更加方便的地方。

这里简单分享项目中用到这2个模版的写数据方式:

首先已经把数据都存到字典中:
dict_data = {‘ThinkPad_Users’: 448177, ‘IdeaPad_Users’: 109626, ‘Desktop_Users’: 50605, ‘Install_ThinkPad’: 903036, ‘Install_IdeaPad’: 197467, ‘Install_Desktop’: 91656, ‘ThinkPad_Fail’: 8495, ‘IdeaPad_Fail’: 1970, ‘Desktop_Fail’: 1592}

然后需要做的是把字典中的数据写入到excel表格中:

使用win32com方法来修改Excel

在学习过程中有什么不懂得可以加
我的python学习交流扣扣qun,688244617
群里有不错的学习教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容。import win32com.client#使用win32com方法来修改Excel
def modify_excel_win32com(dict_data, filename, title):#用于修改Excel的配置xlApp = win32com.client.Dispatch('Excel.Application')#用xlApp打开用于修改和写入数据xlBook = xlApp.Workbooks.Open(filename, ReadOnly = False)sheet = xlBook.Worksheets('WeeklyData'col_size = sheet.UsedRange.columns.Count + 1#判断该title是否存在;如存在则覆盖数据;如不存在则新建数据print(sheet.UsedRange.Value[0])if title in sheet.UsedRange.Value[0]:# print(sheet.UsedRange.Value[0].index(title))col_size = sheet.UsedRange.Value[0].index(title) + 1else:try:col_size = sheet.UsedRange.Value[0].index(None) + 1except:passfinally:sheet.Cells(1, col_size).Value = titleprint(col_size)for key, value in dict_data.items():if key=='Install_A':sheet.Cells(2, col_size).Value = valueelif key=='A_Users':sheet.Cells(3, col_size).Value = valueelif key=='A_Fail':sheet.Cells(4, col_size).Value = valuesheet.Cells(5, col_size).Value = '%.2f%%' % (value / sheet.Cells(2, col_size).Value * 100)# print(sheet.Cells(5, col_size).Value)elif key=='Install_B':sheet.Cells(6, col_size).Value = valueelif key=='B_Users':sheet.Cells(7, col_size).Value = valueelif key=='B_Fail':sheet.Cells(8, col_size).Value = valuesheet.Cells(9, col_size).Value = '%.2f%%' % (value / sheet.Cells(6, col_size).Value * 100)elif key=='Install_C':sheet.Cells(10, col_size).Value = valueelif key=='C_Users':sheet.Cells(11, col_size).Value = valueelif key=='C_Fail':sheet.Cells(12, col_size).Value = valuesheet.Cells(13, col_size).Value = '%.2f%%' % (value / sheet.Cells(10, col_size).Value * 100)sheet.Cells(14, col_size).Value = '%.2f%%' % ((sheet.Cells(4, col_size).Value + sheet.Cells(8, col_size).Value + value) / (sheet.Cells(2, col_size).Value + sheet.Cells(6, col_size).Value + sheet.Cells(10, col_size).Value) * 100)xlBook.Save()     #保存  xlApp.quit()   #关闭excel操作环境。

使用openpyxl库来修改Excel

from openpyxl import worksheet
from openpyxl import workbook
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter#使用openpyxl库来修改Excel
def modify_excel_openpyxl(dict_data, filename, title):    wb = load_workbook(filename)  #打开一个工作簿    sheet = wb['WeeklyData']  #获取一张表col_size = sheet.max_column+1first_row = []for i in range(1, col_size):first_row.append(sheet.cell(row=1, column=i).value)print(first_row)#判断该title是否存在;如存在则覆盖数据;如不存在则新建数据if title in first_row:col_size = first_row.index(title) + 1else:try:col_size = first_row.index(None) + 1except:passfinally:sheet.cell(row=1, column=col_size, value=title)print(get_column_letter(col_size))col_letter = get_column_letter(col_size)sheet[col_letter+'2'] = 'testtest'for key, value in dict_data.items():if key=='Install_A':sheet[col_letter+'2'] = valueelif key=='A_Users':sheet[col_letter+'3'] = valueelif key=='A_Fail':sheet[col_letter+'4'] = valuesheet[col_letter+'5'] = '='+col_letter+'4/'+col_letter+'2'elif key=='Install_B':sheet[col_letter+'6'] = valueelif key=='B_Users':sheet[col_letter+'7'] = valueelif key=='B_Fail':sheet[col_letter+'8'] = valuesheet[col_letter+'9'] = '='+col_letter+'8/'+col_letter+'6'elif key=='Install_C':sheet[col_letter+'10'] = valueelif key=='C_Users':sheet[col_letter+'11'] = valueelif key=='C_Fail':sheet[col_letter+'12'] = valuesheet[col_letter+'13'] = '='+col_letter+'12/'+col_letter+'10'sheet[col_letter+'14'] = '=('+col_letter+'4+'+col_letter+'8+'+col_letter+'12)/('+col_letter+'2+'+col_letter+'6+'+col_letter+'10)'wb.save(filename)wb.close()

Python: 读写Excel(openpyxl / win32com.client)相关推荐

  1. 通过Python读写Excel,实现爬虫的两个方案

    目录 1.需求背景 2.代码实现 2.1.实现方法1 2.1.1.实现思路 2.1.2.代码演示 2.2.实现方法2 2.2.1.实现思路 2.2.2.代码演示 3.拓展知识 1.需求背景 表哥从事某 ...

  2. python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)

    python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv) 一.上传文件 上传一个图片 使用input type="file& ...

  3. python更新excel内容_[原创]使用 Python 读写 Excel 文件(一)更新

    项目要求 如果说是 Office 办公软件使得 Windows 成为主流的操作系统,那么 Excel 就是使得微软硬起来的法宝! Word 和 PowerPoint 都有不相上下的对手,但 Excel ...

  4. python暴力破解excel_使用 Python 读写 Excel 文件(一)

    项目要求 如果说是 Office 办公软件使得 Windows 成为主流的操作系统,那么 Excel 就是使得微软硬起来的法宝! Word 和 PowerPoint 都有不相上下的对手,但 Excel ...

  5. Python读写Excel数据(指定某行某列)

    Python读写Excel数据(指定某行某列) 在Python数据处理中,经常需要对Excel表格进行读写操作,本文的代码介绍了如何通过行与列的下标进行数据的读写:代码对数据格式有要求,读数据要求文件 ...

  6. Python读写EXCEL文件常用方法大全

    前言 python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式. 用xlrd和xlwt进行excel读写: 用openpyxl进行excel读写: 用pa ...

  7. python写入excel文件保存在哪里_万字长文记录Python读写EXCEL文件常用方法大全

    python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式. 用xlrd和xlwt进行excel读写; 用openpyxl进行excel读写; 用panda ...

  8. python: 读写excel文件

    文章目录 python 读写 excel 文件 Excel 文件简略描述 xlwt xlrd xlutils 读写 xlrd 读取 xlwt 写 xlutils 任务练习 python 读写 exce ...

  9. python读写excel表格

    3中模块3中方式:https://www.jianshu.com/p/19219542bf23 python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别: 用xlrd和xlwt进行ex ...

最新文章

  1. 计算机应用基础 网上教学设计方案,《计算机应用基础》(本)教学设计方案.doc...
  2. 倒置 mysql_SQL Server中的行列倒置技巧
  3. 北斗导航 | ION GNSS+ 2021、 ION GNSS+ 2020会议论文下载:ION 美国导航学会
  4. 完成css的切图 图片任意,css切图是什么意思
  5. python怎么读取pdf为文本_如何从pdf文件中提取特定文本python
  6. leetcode刷题:无重复字符的最长子串
  7. 数据库基础笔试题(附带答案)
  8. unity如何重新生成解决方案_揭秘Sherman:使用Unity制作影视级光照效果
  9. android re浏览器下载,RE文件浏览器
  10. PowerApps社区计划
  11. 计算机考研英语一历年国家线,历年考研英语国家线
  12. OSAL 之功耗管理
  13. docker创建容器一直restart解决
  14. 一小时搞定计算机网络面试
  15. 13.1 GAS基本框架搭建及第一个GA
  16. Web服务器简介----Tomcat从认识到下载安装到配置使用
  17. L1-014 简单题 - java
  18. 基于STM32F4的音乐频谱分析
  19. 云展网教程 | 为什么下载下来的EXE文件打不开?
  20. docker下载后安装失败:This computer doesn’t have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory.

热门文章

  1. 性能测试工具-ab介绍
  2. Windows下套接字
  3. unity 利用iTextSharp 开发doc转换pdf文档
  4. shell双引号中引用变量
  5. JMS解析(二)——JMS简介
  6. fabs在python中是什么意思_fabs在c语言中意思
  7. webconfig machineKey
  8. 上交所几大平台及其处理业务介绍
  9. [ Ubuntu 使用技巧 ] 使用 Synergy 联接两台设备使用同一套键鼠操控
  10. linux安装xfce4,Archlinux xfce4 安装(一)