python2 对excel表格操作完整示例


Posted in Python onFebruary 23, 2020

本文实例讲述了python2 对excel表格操作。分享给大家供大家参考,具体如下:

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Sat Dec 2 15:40:35 2017
@author: 260207
"""
from xlutils.copy import copy
import xlrd 
import xlwt
def set_style(name = 'Times New Roman',height = 6,bold=False):
#  设置单元格样式
  style = xlwt.XFStyle() # 初始化样式
  font = xlwt.Font()  # 设置字体样式
  font.name = name   # 字体名称'Times New Roman'
  font.bold = bold   #加粗 
  font.color_index = 4 #颜色
  font.height = height #高度
  style.font = font     #定义字体属性
  return style
def write_excel(bomcode ): #创建标准件模板
  excel = xlwt.Workbook() #创建工作簿
  import datetime
  dateTime=datetime.datetime.now().strftime('%Y-%m-%d')
  sheet1 = excel.add_sheet(u'标贴防错系统',cell_overwrite_ok=True)
  #生成表头,即第一列
  sheet1.write(0,0,u'订单编码',set_style('Times New Roman',180))
  sheet1.write(0,1,u'当前时间',set_style('Times New Roman',180))
  sheet1.write(0,2,u'检测总量', set_style('Times New Roman', 180))
  sheet1.write(0,3,u'出错数量', set_style('Times New Roman', 180))
  sheet1.write(0, 4, u'正确数量', set_style('Times New Roman', 180))
  sheet1.write(0,5,u'合格率', set_style('Times New Roman', 180))
  excel.save(file_dir+str(dateTime)+'.xls') #保存文件
#
def seefile(file_dir):
  import os
  L=[] 
  for root, dirs, files in os.walk(file_dir): 
    for file in files: 
      if os.path.splitext(file)[1] == '.xls': 
        L.append(os.path.join(root, file)) 
  return L
def add_excel(passflag,row,error,true): # 添加内容
  import datetime
  dateTime = datetime.datetime.now().strftime('%Y-%m-%d') # 查看时间
  nowTime = datetime.datetime.now().strftime('%H:%M:%S')
  workbook = xlrd.open_workbook(file_dir+str(dateTime)+'.xls','r+')
  new_excel = copy(workbook)
  ws = new_excel.get_sheet(0) # 索引到表格
  ws.write(row, 0, str(bomcode), set_style('Times New Roman', 180))
  ws.write(row, 1, str(nowTime), set_style('Times New Roman', 180)) 
  if passflag == 1:
    ws.write(row, 3, error+1, set_style('Times New Roman', 180))
    ws.write(row, 4, true, set_style('Times New Roman', 180))
  else:
    ws.write(row, 4, true+1, set_style('Times New Roman', 180))
    ws.write(row, 3, error, set_style('Times New Roman', 180))
  ws.write(row, 2, error+true+1, set_style('Times New Roman', 180))
  new_excel.save(file_dir+str(dateTime)+'.xls')
def pass_rate(row):
  import datetime
  dateTime = datetime.datetime.now().strftime('%Y-%m-%d')
  workbook112 = xlrd.open_workbook(file_dir+str(dateTime)+'.xls','r+')
  all_excel = copy(workbook112)
  ws1 = all_excel.get_sheet(0)
  workbook_position = workbook112.sheet_by_index(0)
  all_value=workbook_position.cell(row,2).value
  true_value=workbook_position.cell(row,4).value
  ws1.write(row, 5, round(float(true_value)/(all_value),2), set_style('Times New Roman', 180)) 
  all_excel.save(file_dir+str(dateTime)+'.xls')
def data_analysis(bomcode):
  import datetime
  dateTime = datetime.datetime.now().strftime('%Y-%m-%d')
  filename = seefile(file_dir)
  filename = list(reversed(filename))
  #增加异常,文件名需按最新时间排列
  if (filename ==[]) or (filename is None) or (dateTime!=(filename[0])[-14:-4]) :
    write_excel(bomcode)
  workbook = xlrd.open_workbook(file_dir+str(dateTime)+'.xls','r+')
  workbook_position = workbook.sheet_by_index(0)
  cols_0 = workbook_position.col_values(0)
  if bomcode in cols_0:    
    row_error = cols_0.index(bomcode)
    error=workbook_position.cell(row_error,3).value
    true=workbook_position.cell(row_error,4).value
    row = row_error
  else :
    error = 0
    true = 0
    row = len(cols_0)
  add_excel(passflag,row,error,true)
  pass_rate(row)
if __name__ == '__main__':
  file_dir ='C:/Users/Administrator/Desktop/Data_analysis/'
  bomcode='21122'
  passflag =0
  data_analysis(bomcode)
#  add_excel(bomcode,passflag,row)

运行后将数据写入如下xls文件:

python2 对excel表格操作完整示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python实现监控windows服务并自动启动服务示例
Apr 17 Python
深入分析在Python模块顶层运行的代码引起的一个Bug
Jul 04 Python
gearman的安装启动及python API使用实例
Jul 08 Python
Python制作刷网页流量工具
Apr 23 Python
Python使用defaultdict读取文件各列的方法
May 11 Python
python 读取文本文件的行数据,文件.splitlines()的方法
Jul 12 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
python实现输入任意一个大写字母生成金字塔的示例
Oct 27 Python
简单了解python中的f.b.u.r函数
Nov 02 Python
Python中logging日志记录到文件及自动分割的操作代码
Aug 05 Python
Django restful framework生成API文档过程详解
Nov 12 Python
使用python生成大量数据写入es数据库并查询操作(2)
Sep 23 Python
深入浅析python变量加逗号,的含义
Feb 22 #Python
详解django中Template语言
Feb 22 #Python
Python使用configparser库读取配置文件
Feb 22 #Python
Pytest参数化parametrize使用代码实例
Feb 22 #Python
Pytest mark使用实例及原理解析
Feb 22 #Python
python如何通过闭包实现计算器的功能
Feb 22 #Python
postman和python mock测试过程图解
Feb 22 #Python
You might like
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
PHP开发负载均衡指南
2010/07/17 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
CSS+Jquery实现页面圆角框方法大全
2009/12/24 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
jquery中子元素和后代元素的区别示例介绍
2014/04/02 Javascript
模拟一个类似百度google的模糊搜索下拉列表
2014/04/15 Javascript
JavaScript里实用的原生API汇总
2015/05/14 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
如何从零开始手写Koa2框架
2019/03/22 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
JS一次前端面试经历记录
2020/03/19 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
[28:07]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第二场 12.13
2020/12/17 DOTA
单链表反转python实现代码示例
2018/02/08 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
python中的split、rsplit、splitlines用法说明
2020/10/23 Python
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
英国健身超市:Fitness Superstore
2019/06/17 全球购物
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
委托公证书范本
2014/04/03 职场文书
个人年终总结结尾
2015/03/06 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
css3应用示例:新增的选择器
2022/03/16 HTML / CSS
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers