Python 通过 xlwings 读取 Excel 数据

去年底公司让我做设备管理,多次委婉拒绝,最终还是做了。其实我比较喜欢技术。做管理后发现现场没有停机率统计,而原始数据有,每次要自己在Excel中填写数据,感觉特麻烦了,就写了这个自动化操作Excel的程序,以前要半天的工作量,用Python不到10s。程序比较简单,直接上程序。

# -*- coding: utf-8 -*-

import xlwings as xw

import pandas as pd

from datetime import datetime

# 统计时间, 只有时间要改

START_TIME = '2018-07-01 00:00:00'

END_TIME = '2018-07-31 23:59:00'

START_ROW = 2 # 处理Excel文件开始行

END_ROW = 200 # 处理Excel结束行

# 天数 * 每天工作时间 * 分钟

WORK_TIME = 30 * 22 * 60

# 关键设备清单

key_machine = ['609', '610', '621', '622', '623', '624',

'627', '628', '636', '638', '667', '670', '675', '689']

persons = ['张三', '李四', '王五']

app = xw.App(visible=True, add_book=False)

wb_source = app.books.open('downTimeData.xls') # 打开Excel文件 downTimeData.xls

sheet = wb_source.sheets[0] # 选择第0个表单

# 需每月修改时间

start_datetime = datetime.strptime(START_TIME, '%Y-%m-%d %H:%M:%S') # 把开始统计时间转换为DateTime

end_datetime = datetime.strptime(END_TIME, '%Y-%m-%d %H:%M:%S') # 把结束统计时间转换为DateTime

result = []

for row in range(START_ROW, END_ROW):

row_content = []

row_str = str(row)

time_str = sheet.range('C' + row_str).value.strip()

create_datetime = datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')

if start_datetime <= create_datetime <= end_datetime:

machine = sheet.range('A' + row_str).value

machine_number = machine[-4:-1]

if machine_number in key_machine:

if sheet.range('G' + row_str).value.strip() in persons:

row_content.append(machine_number)

row_content.append(create_datetime)

response_time_str = sheet.range('D' + row_str).value

complete_time_str = sheet.range('E' + row_str).value

row_content.append(response_time_str + complete_time_str)

solution_str = sheet.range('H' + row_str).value.strip()

row_content.append(solution_str)

comments = sheet.range('I' + row_str).value.strip()

row_content.append(comments)

result.append(row_content)

# count the times and downtime on the same machine and put it in dictionary

# 统计每台设备的停机次数

dict_result = {}

for _, [name, _, downtime, _, _] in enumerate(result):

if name in dict_result:

dict_result[name] = (dict_result[name][0] + 1,

dict_result[name][1] + downtime)

else:

dict_result[name] = (1, downtime)

# fill the result and write it on excel

target_name = START_TIME[5:7]

wb_target = app.books.open('analysis2018.xlsx') # 打开Excel文件,把结果写入

index = 3

for key in key_machine:

if key not in dict_result:

wb_target.sheets[target_name].range('B' + str(index)).value = 0

wb_target.sheets[target_name].range('C' + str(index)).value = 0

wb_target.sheets[target_name].range('D' + str(index)).value = WORK_TIME

wb_target.sheets[target_name].range('E' + str(index)).value = 0

wb_target.sheets[target_name].range('F' + str(index)).value = 0

else:

wb_target.sheets[target_name].range(

'B' + str(index)).value = dict_result[key][0]

wb_target.sheets[target_name].range(

'C' + str(index)).value = dict_result[key][1]

wb_target.sheets[target_name].range(

'D' + str(index)).value = (WORK_TIME - dict_result[key][1]) / dict_result[key][0]

wb_target.sheets[target_name].range(

'E' + str(index)).value = dict_result[key][1] / dict_result[key][0]

wb_target.sheets[target_name].range(

'F' + str(index)).value = dict_result[key][1] / WORK_TIME

index += 1

# write the comment and solution on excel

result.sort() # 故障信息排序,用于最后输出

df = pd.DataFrame(result, columns=['编号',

'故障时间',

'停机时间', '解决方案', '备注'])

wb_target.sheets[target_name].range('H2').value = df

wb_target.sheets[target_name].autofit('c')

Python使用openpyxl读写excel文件

Python使用openpyxl读写excel文件 这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 读取E ...

【转发】Python使用openpyxl读写excel文件

Python使用openpyxl读写excel文件 这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 读取E ...

Python用openpyxl读写Excel

openpyxl是一个用于读写Excel 2010 xlsx文件的python库.openpyxl官方文档:https://openpyxl.readthedocs.io/en/stable/ 一.安 ...

python xlrd&comma;xlwt 读写excel文件

python 读excel文件,需要xlrd库.下载地址:https://pypi.python.org/pypi/xlrd python 写excel文件,需要xlwt库.下载地址:https:// ...

用插件NPOI读写excel

1.用插件NPOIusing NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using NPOI.HSSF.UserModel; public class E ...

Python用Pandas读写Excel

Pandas是python的一个数据分析包,纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速便捷地处理数据的函数和方法. Pandas官方文档 ...

python 单元测试&lowbar;读写Excel及配置文件(八)

一.安装openpyxl模块 openpyxl模块:是用于解决Excel(WPS等均可使用)中扩展名为xlsx/xlsm/xltx/xltm的文件读写的第三方库.xls文件要使用xlwt .wlrd两 ...

利用NPOI开源的读写Excel、WORD等微软OLE2组件读写execl,控制样式或单元格

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

Python 使用 xlwings 往 excel 中写入一行数据的两种方法

该方法跟上一篇写入一列的方法相反,代码如下: # -*- coding:utf-8 -*- import xlwings as xw list1 = [1,2,3,4,5] list2 = [[1], ...

随机推荐

spring mvc 和spring security配置 web&period;xml设置

<?xml version="1.0" encoding="UTF-8"?>

源码深度解析SpringMvc请求运行机制(转)

源码深度解析SpringMvc请求运行机制 本文依赖的是springmvc4.0.5.RELEASE,通过源码深度解析了解springMvc的请求运行机制.通过源码我们可以知道从客户端发送一个URL请 ...

【Java学习笔记】Hello world

package aaa; public class aaa { public static void main(String args[]){ System.out.println("hel ...

RedHat7上安装PHP

编译安装PHP 下载PHP# wget http://cn2.php.net/distributions/php-7.0.0.tar.gz 解压缩PHP# tar -zxvf php-7.0.0.ta ...

SQL Server 性能调优 之运行计划(Execution Plan)调优

运行计划中的三种 Join 策略 SQL Server 存在三种 Join 策略:Hash Join,Merge Join,Nested Loop Join. Hash Join:用来处理没有排过序/ ...

Android项目---TouchListener

public static interface View.OnTouchListener android.view.View.OnTouchListener Known Indirect Subcla ...

C&num;函数式程序设计之泛型

Intellij修改archetype Plugin配置 2014-03-16 09:26 by 破狼, 204 阅读, 0 评论,收藏, 编辑 Maven archetype plugin为我们提供 ...

QT第六天学习

基本事件: 鼠标事件 键盘事件 绘制事件 1.QT中的事件: 事件是对各应用程序需要知道的由应用程序内部或外部产生的事情或动作的通称. QT中事件的处理: 在QT中使用一个对象来表示一个事件,继承自Q ...

excel python插件_利用 Python 插件 xlwings 读写 Excel相关推荐

  1. python利用pandas合并excel表格代码_利用Python pandas对Excel进行合并的方法示例

    前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...

  2. python对excel数据更改_利用python对excel中一列的时间数据更改格式代码示例

    本篇文章小编给大家分享一下利用python对excel中一列的时间数据更改格式代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 问题场景:需要将 ...

  3. 利用python发送邮件_利用python实现简单的邮件发送客户端示例

    脚本过于简单,供学习和参考.主要了解一下smtplib库的使用和超时机制的实现.使用signal.alarm实现超时机制. #!/usr/bin/env python # -*- coding: ut ...

  4. 动态照片墙 python 实现_利用python生成照片墙的示例代码

    这篇文章主要介绍了利用python生成照片墙的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 PIL(Python Im ...

  5. ppt python 图表_利用python分析weibo数据做成图表放入PPT中

    起因 很久以前,就有个想法,就是自动分析微博的数据,但是之前一直想的是网页版展示,flask想学了好久都没学,偶然的一次看到了一篇关于python处理pptx的文章,再加上同窗三年的室友在毕业后竟然主 ...

  6. java调python 监控_利用Python实现一个简单的系统监控图表

    作为运维人员,想必大家肯定都做过这样的事情:为了监控系统资源使用情况,开了若干个窗口,来回切换看输出: 只要我切得够快,性能异常点就逃不过我的眼睛! 这个时候你要是有个监控工具自然是很好的,例如我们美 ...

  7. python推荐_利用Python构建一个简单的推荐系统

    原标题:利用Python构建一个简单的推荐系统 摘要:快利用python构建一个属于你自己的推荐系统吧,手把手教学,够简单够酷炫.在此之前读者需要对pandas和numpy等数据分析包有所了解. 什么 ...

  8. autocad支持python吗_利用python控制Autocad:pyautocad方式

    发现pyautocad模块:可以用python控制autocad的包.今天把文档中的重点内容摘录出来,以后绘图.计算大工程量.或者识别施工图的时候时候也许可以用到. 一.连接cad pyautocad ...

  9. python拼图_利用python制作拼图小游戏的全过程

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 关注公众号:Python学习指南,回复"拼图"即可获取源码 环境搭建 安装P ...

最新文章

  1. R学习笔记之五:数据操作
  2. C++用顶层函数重载操作符(三)用友元优化
  3. Android笔记:LitePal库的更新,DataSupport被弃用问题
  4. asp.net core json返回的时间格式出现T 如何解决
  5. go安装goctl进行Go Dockefile的自动生成
  6. 转:MFC 的程序中GetAt()的理解
  7. Fedora Remix for WSL 登陆微软商城
  8. Java中流的使用和说明(二)
  9. 高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore
  10. 24Ghz毫米波雷达,人体存在检测轨迹检测雷达传感模块,应用智能家居
  11. jQuery 插件——免费版
  12. 数列极限四则运算误区
  13. win10 设置ctrl+shift 切换 中文输入法 英文输入法
  14. 为什么说小米会是品牌2020年最重要的增长源?
  15. [svn] TortoisSVN的Blam功能
  16. 视频教程-Jira敏捷项目管理(1)-Linux
  17. 计算机综述性论文范文例文,综述性论文范文
  18. 纪中20日c组模拟赛T1 2121. 简单游戏
  19. Spring + Thymeleaf 方言
  20. HTML textarea 标签的 wrap 属性

热门文章

  1. c语言必背数据结构_数据结构(C语言)考试重点必背
  2. Vue 消除Token过期时刷新页面的重复提示
  3. shell 数组里追加数值_shell编程之数组及变量的多功能用法
  4. linux6.5下配置nfs,CentOS 6.5 NFS配置详细教程
  5. 前端和后端哪个工资高_嵌入式软硬件工程师哪个更有前途,工资还高
  6. 上海找python工作容易吗_Python程序员去上海工作有多难?
  7. 英语阅读计算机病毒是指,2016年职称计算机考试真题及答案
  8. 一个比较方便的转换NSString为UTF8编码的函数
  9. 【题解】大床Nim (2019,5.23)
  10. ICG游戏:尼姆游戏异或解法的证明