一、基础
  1. 安装openpyxl 模块

    pip install openpyxl 或者通过轮子安装
  • font(字体类):字号、字体颜色、下划线等

  • fill(填充类):颜色等

  • border(边框类):设置单元格边框

  • alignment(位置类):对齐方式

  • number_format(格式类):数据格式

  • protection(保护类):写保护

1.1 创建excel文件
from openpyxl import Workbook
wb = Workbook() #创建文件对象 wb.remove(wb["sheet"]) wb.remove(self.wb["sheet"]) #移除掉第一个sheet ws = wb.create_sheet("{0}蒸汽压力记录表".format(self.sample_name), 0) #生成所含列总数的大写字母
upper_string_list = string.ascii_uppercase[:self.all_col] wb.save("e:\\sample.xlsx")
1.2 操作单元格
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.create_sheet("Mysheet") #创建一个sheet ws1["A1"]=123.11
ws1["B2"]="你好"
d = ws1.cell(row=4, column=2, value=10) print ws1["A1"].value
print ws1["B2"].value
print d.value # Save the file
wb.save("e:\\sample.xlsx")
1.3 对多个单元格
import uuid
import string
import json
import time
import os
import base64 from openpyxl.workbook import Workbook
from openpyxl.styles import Font, Alignment, Side, Border from Lib.Utils import Utils class ExportReport: def __init__(self, start_time, water_temp, test_people,
sample_name, pressure_value, pressure_list,*args, **kwargs):
""" :param start_time: 实验开始时间
:param water_temp: 水浴温度
:param test_people: 试验人
:param sample_name: 样品名称
:param pressure_value: 最终压力
:param args: 实验过程压力记录列表
:param kwargs:
"""
self.start_time = start_time
self.water_temp = str(water_temp)+' ℃'
self.test_people = test_people
self.sample_name = sample_name
self.pressure_value = pressure_value
self.all_col = 5+len(pressure_list) #一共多少列
self.pressure_record = pressure_list #第六列到最后一列的数据列表 #所有的数据列
self.data_list = [
self.start_time, self.water_temp,
self.test_people,self.sample_name,
self.pressure_value
]
self.data_list.extend(self.pressure_record)
self.col_list = ["开始时间", "水浴温度", "测试人", "样品名称", "最终压力值"] # base64转化为图片
# self.bs64 = bs64
# self.img_path = Utils.change_base64_as_img(self.bs64) self.wb = Workbook() #self.wb.remove(self.wb["sheet"]) self.ws = self.wb.create_sheet("{0}蒸汽压力记录表".format(self.sample_name), 0)
#生成所含列总数的大写字母
self.upper_string_list = string.ascii_uppercase[:self.all_col]
# 水平对齐,居中对齐
self.alignment_style = Alignment(horizontal='center', vertical='center')
#定义border 边框样式
left, right, top, bottom = [Side(style='thin', color='000000')]*4
self.border_style = Border(left=left, right=right, top=top, bottom=bottom)
#定义字体
self.font_size = Font(size=9)
for col in self.upper_string_list:
self.ws.column_dimensions[col].width = 20 #创建表头第一行
def create_row1(self):
#把所有列合并
self.ws.merge_cells(start_row=1, end_row=1, start_column=1, end_column=self.all_col)
#写入值
# self.ws.cell(row=1, column=1).value = value
self.ws.cell(row=1, column=1).value = "{0}蒸汽压力记录表".format(self.sample_name)
self.ws['A1'].alignment = self.alignment_style
self.ws['A1'].font = Font(size=16, bold=True)
self.create_row2_3() def create_row2_3(self):
#把前五列,二三行单元格合并,并写入值
for col in range(1, len(self.col_list)+1):
self.ws.merge_cells(start_row=2, end_row=3, start_column=col, end_column=col)
col_str = self.upper_string_list[col-1]+"2"
self.ws[col_str] = self.col_list[col-1]
self.ws[col_str].alignment = self.alignment_style
self.ws[col_str].font = Font(size=12, bold=True) #把第二行第六列开始到最后列合并
self.ws.merge_cells(start_row=2, end_row=2, start_column=len(self.col_list)+1, end_column=self.all_col)
col_str = self.upper_string_list[len(self.col_list)]+"2"
self.ws[col_str] = "实验过程压力记录"
self.ws[col_str].alignment = self.alignment_style
self.ws[col_str].font = Font(size=12, bold=True) #第三行第六列开始到最后列写入值
for index, col_ltr in enumerate(self.upper_string_list[5:]):
col_str = col_ltr+'3'
self.ws[col_str] = "第{0}次压力记录".format(index+1)
self.ws[col_str].alignment = self.alignment_style
self.ws[col_str].font = Font(size=12, bold=True) def add_data(self):
#第四行开始写入数据,所有数据居中对齐,水平居中
for index, col in enumerate(self.upper_string_list):
col_str = col+"4"
self.ws[col_str] = self.data_list[index]
self.ws[col_str].alignment = self.alignment_style
self.ws[col_str].font = Font(size=12, bold=True) def create(self,value=None):
if value:
self.ws.cell(row=1, column=1).value = value
self.create_row1()
self.add_data() def save(self, filename):
try:
self.wb.save(filename)
except:
self.wb.save(filename[:-5] + str('_' + Utils.getFileName()) + filename[-5:]) # 关闭excel
self.close() def close(self):
self.wb.close() if __name__ == '__main__':
er = ExportReport(1, 2, 3, 4, 5, ['x', 's', 's', 'b','w'])
er.create()
er.wb.save('17表.xlsx')

Python操作Excel 之 openpyxl的更多相关文章

  1. python操作Excel、openpyxl 之图表,折线图、饼图、柱状图等

    一.准备 需要模块: from openpyxl.workbook import Workbook from openpyxl.chart import Series,LineChart, Refer ...

  2. Python 操作excel之 openpyxl模块

    1. 安装 pip install openpyxl 想要在文件中插入图片文件,需要安装pillow,安装文件:PIL-fork-1.1.7.win-amd64-py2.7.exe · font(字体 ...

  3. python操作Excel模块openpyxl

    https://www.cnblogs.com/zeke-python-road/p/8986318.html # -*- coding: utf-8 -*-from openpyxl import ...

  4. python操作excel——openpyxl

    一.概述 python操作excel各个库对比:https://www.cnblogs.com/paul-liang/p/9187503.html 官方文档:https://openpyxl.read ...

  5. Python操作excel(xlrd和xlwt)

    Python操作excel表格有很多支持的库,例如:xlrd.xlwt.openpyxl.win32com,下面介绍使用xlrd.xlwt和xlutils模块这三个库不需要其他的支持,在任何操作系统上 ...

  6. Python 利用Python操作excel表格之openyxl介绍Part2

    利用Python操作excel表格之openyxl介绍 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群(群号:7156436) ## 绘图 c = LineChart()    ...

  7. Python 利用Python操作excel表格之openyxl介绍Part1

    利用Python操作excel表格之openyxl介绍 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群(群号:7156436),免费获取以下性能监控工具(类似Nmon精简版) ...

  8. 运营的Python指南 - Python 操作Excel

    这是一份写给运营人员的Python指南.本文主要讲述如何使用Python操作Excel.完成Excel的创建,查询和修改操作. 相关代码请参考 https://github.com/RustFishe ...

  9. 用Python操作excel文档

    使用Python第三方库 这一节我们学习如何使用Python去操作Excel文档.如果大家有人不知道Excel的话,那么建议先学一学office办公基础.这里想要操作Excel,必须安装一个Pytho ...

随机推荐

  1. springboot的war和jar包

    本篇和大家分享的是通过maven对springboot中打war包和jar包:war通常来说生成后直接放到tomcat的webapps下面就行,tomcat配置自动解压war,而jar一般通过命令行部 ...

  2. Java中食之无味弃之可惜的数组

    在Java的泛型出现之前,只有数组可以用来存储指定类型的对象:在自动装箱机制出现之前,只有数组可以用来存储基本数据类型:也就是说,在泛型和自动装箱机制出现之前,数组在Java当中的分量举足轻重. 况且 ...

  3. 一个适合.NET Core的代码安全分析工具 - Security Code Scan

    本文主要翻译自Security Code Scan的官方Github文档,结合自己的初步使用简单介绍一下这款工具,大家可以结合自己团队的情况参考使用.此外,对.NET Core开发团队来说,可以参考张 ...

  4. MyX5TbsDemo【体验腾讯浏览服务Android SDK (完整版)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 按照官网上的说明:可独立下载x5内核,也可共享使用微信或手Q的x5内核. 本Demo在引用腾讯X5内核的基础上进行了封装.参考< ...

  5. Node.js学习(第一章:Node.js安装和模块化理解)

    Node.js安装和简单使用 安装方法 简单的安装方式是直接官网下载,然后本地安装即可.官网地址:nodejs.org Windows系统下,选择和系统版本匹配的.msi后缀的安装文件.Mac OS ...

  6. Netty源码—一、server启动(1)

    Netty作为一个Java生态中的网络组件有着举足轻重的位置,各种开源中间件都使用Netty进行网络通信,比如Dubbo.RocketMQ.可以说Netty是对Java NIO的封装,比如ByteBu ...

  7. Python generator和yield介绍

    Python生成器(generator)并不是一个晦涩难懂的概念.相比于MetaClass和Closure等概念,其较为容易理解和掌握.但相对于程序结构:顺序.循环和分支而言其又不是特别的直观.无论学 ...

  8. 点击菜单选项,右侧主体区新增子界面(Tab)的实现

    今天是2019年小年后一天,还有三天回家过年. 今天记录一下一种前端页面的效果的实现,这种效果很常见,一般用于网站后台系统的前端页面.一般后台系统会分为顶部导航栏,左边的菜单栏和右边的主体区.有一种效 ...

  9. ASP.NET Core 基于JWT的认证(二)

    ASP.NET Core 基于JWT的认证(二) 上一节我们对 Jwt 的一些基础知识进行了一个简单的介绍,这一节我们将详细的讲解,本次我们将详细的介绍一下 Jwt在 .Net Core 上的实际运用 ...

  10. WPF ObservableCollection 异步调用问题

    问题介绍 当ObservableCollection列表被UI线程占用时,如果在异步线程中调用ObservableCollection,会弹出以下异常: 问题分析 我们使用一个viewModel,在V ...