Python操作Excel 之 openpyxl
- 安装openpyxl 模块
pip install openpyxl 或者通过轮子安装
font(字体类):字号、字体颜色、下划线等
fill(填充类):颜色等
border(边框类):设置单元格边框
alignment(位置类):对齐方式
number_format(格式类):数据格式
protection(保护类):写保护
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")
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")
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的更多相关文章
- python操作Excel、openpyxl 之图表,折线图、饼图、柱状图等
一.准备 需要模块: from openpyxl.workbook import Workbook from openpyxl.chart import Series,LineChart, Refer ...
- Python 操作excel之 openpyxl模块
1. 安装 pip install openpyxl 想要在文件中插入图片文件,需要安装pillow,安装文件:PIL-fork-1.1.7.win-amd64-py2.7.exe · font(字体 ...
- python操作Excel模块openpyxl
https://www.cnblogs.com/zeke-python-road/p/8986318.html # -*- coding: utf-8 -*-from openpyxl import ...
- python操作excel——openpyxl
一.概述 python操作excel各个库对比:https://www.cnblogs.com/paul-liang/p/9187503.html 官方文档:https://openpyxl.read ...
- Python操作excel(xlrd和xlwt)
Python操作excel表格有很多支持的库,例如:xlrd.xlwt.openpyxl.win32com,下面介绍使用xlrd.xlwt和xlutils模块这三个库不需要其他的支持,在任何操作系统上 ...
- Python 利用Python操作excel表格之openyxl介绍Part2
利用Python操作excel表格之openyxl介绍 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群(群号:7156436) ## 绘图 c = LineChart() ...
- Python 利用Python操作excel表格之openyxl介绍Part1
利用Python操作excel表格之openyxl介绍 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群(群号:7156436),免费获取以下性能监控工具(类似Nmon精简版) ...
- 运营的Python指南 - Python 操作Excel
这是一份写给运营人员的Python指南.本文主要讲述如何使用Python操作Excel.完成Excel的创建,查询和修改操作. 相关代码请参考 https://github.com/RustFishe ...
- 用Python操作excel文档
使用Python第三方库 这一节我们学习如何使用Python去操作Excel文档.如果大家有人不知道Excel的话,那么建议先学一学office办公基础.这里想要操作Excel,必须安装一个Pytho ...
随机推荐
- javascript权威指南笔记[1-5]
1.javaScript的数据类型分为两类:原始类型和对象类型: 2.javaScript中除了数字,字符串,布尔值,null,undefined之外就是对象了: 3.对象(object)是属性(pr ...
- 编辑器开发之 Range 范围对象的学习
写在前面: 网上有各种富文本编辑器,微博分享等操作,这些功能非常实用,他们就是使用 range,selection 对象来实现的,这两个对象偏冷门,不涉及编辑器一般用不到,range 对象是对选区的操 ...
- docker 搭建私有仓库 harbor
前提 已安装好 docker 和 docker-compose 环境:CentOS Linux release 7.5 docker 版本:18.09.05 1.安装harbor wget -P / ...
- DotNetCore跨平台~dotnet pack打包详细介绍
回到目录 dotnet pack 命令生成项目并创建 NuGet 包.这个操作的结果是两个 nupkg 扩展名的包.一个包含代码,另一个包含调试符号. 该项目被依赖的 NuGet 包装被添加到 nus ...
- python ddt数据驱动(简化重复代码)
在接口自动化测试中,往往一个接口的用例需要考虑 正确的.错误的.异常的.边界值等诸多情况,然后你需要写很多个同样代码,参数不同的用例.如果测试接口很多,不但需要写大量的代码,测试数据和代码柔合在一起, ...
- SLAM+语音机器人DIY系列:(三)感知与大脑——2.带自校准九轴数据融合IMU惯性传感器
摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...
- hosts文件的作用
hosts文件的作用 hosts文件是一个没有扩展名的系统文件,可以用记事本等工具打开,作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库",当用户在浏览器中输入一 ...
- RAC(ReactiveCocoa)概括
ReactiveCocoa(简称RAC,以下都用RAC)是github团队开源的一套基于Cocoa并且具有FRP(Functional Reactive Programming-响应式编程)特性的框架 ...
- dotnet core 微服务教程
这个教程主要是对于第一次使用dotnet core开发的同学. 运行环境是在centos 7 , 使用了docker容器. 即这是一篇运行在linux的docker容器上的微服务的简单应用. 一. 安 ...
- (摘)timeout Timeout时间已到.在操作完成之前超时时间已过或服务器未响应的几种情况
Timeout时间已到.在操作完成之前超时时间已过或服务器未响应 问题 在使用asp.net开发的应用程序查询数据的时候,遇到页面请求时间过长且返回"Timeout时间已到.在操作完成之间超 ...