excel python插件_利用 Python 插件 xlwings 读写 Excel
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,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 單元測試_讀寫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.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#函數式程序設計之泛型
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬取小游戏_如何用Pytho
- 下一篇: python语言是一门编程语言_pyth