一、基础
  1. 安装openpyxl 模块

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

  • fill(填充类):颜色等

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

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

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

  • protection(保护类):写保护

1.1 创建excel文件
  1. from openpyxl import Workbook
  2. wb = Workbook() #创建文件对象
  3. wb.remove(wb["sheet"])
  4. wb.remove(self.wb["sheet"]) #移除掉第一个sheet
  5. ws = wb.create_sheet("{0}蒸汽压力记录表".format(self.sample_name), 0)
  6. #生成所含列总数的大写字母
  7. upper_string_list = string.ascii_uppercase[:self.all_col]
  8. wb.save("e:\\sample.xlsx")
1.2 操作单元格
  1. from openpyxl import Workbook
  2. wb = Workbook()
  3. ws1 = wb.create_sheet("Mysheet") #创建一个sheet
  4. ws1["A1"]=123.11
  5. ws1["B2"]="你好"
  6. d = ws1.cell(row=4, column=2, value=10)
  7. print ws1["A1"].value
  8. print ws1["B2"].value
  9. print d.value
  10. # Save the file
  11. wb.save("e:\\sample.xlsx")
1.3 对多个单元格
  1. import uuid
  2. import string
  3. import json
  4. import time
  5. import os
  6. import base64
  7. from openpyxl.workbook import Workbook
  8. from openpyxl.styles import Font, Alignment, Side, Border
  9. from Lib.Utils import Utils
  10. class ExportReport:
  11. def __init__(self, start_time, water_temp, test_people,
  12. sample_name, pressure_value, pressure_list,*args, **kwargs):
  13. """
  14. :param start_time: 实验开始时间
  15. :param water_temp: 水浴温度
  16. :param test_people: 试验人
  17. :param sample_name: 样品名称
  18. :param pressure_value: 最终压力
  19. :param args: 实验过程压力记录列表
  20. :param kwargs:
  21. """
  22. self.start_time = start_time
  23. self.water_temp = str(water_temp)+' ℃'
  24. self.test_people = test_people
  25. self.sample_name = sample_name
  26. self.pressure_value = pressure_value
  27. self.all_col = 5+len(pressure_list) #一共多少列
  28. self.pressure_record = pressure_list #第六列到最后一列的数据列表
  29. #所有的数据列
  30. self.data_list = [
  31. self.start_time, self.water_temp,
  32. self.test_people,self.sample_name,
  33. self.pressure_value
  34. ]
  35. self.data_list.extend(self.pressure_record)
  36. self.col_list = ["开始时间", "水浴温度", "测试人", "样品名称", "最终压力值"]
  37. # base64转化为图片
  38. # self.bs64 = bs64
  39. # self.img_path = Utils.change_base64_as_img(self.bs64)
  40. self.wb = Workbook()
  41. #self.wb.remove(self.wb["sheet"])
  42. self.ws = self.wb.create_sheet("{0}蒸汽压力记录表".format(self.sample_name), 0)
  43. #生成所含列总数的大写字母
  44. self.upper_string_list = string.ascii_uppercase[:self.all_col]
  45. # 水平对齐,居中对齐
  46. self.alignment_style = Alignment(horizontal='center', vertical='center')
  47. #定义border 边框样式
  48. left, right, top, bottom = [Side(style='thin', color='000000')]*4
  49. self.border_style = Border(left=left, right=right, top=top, bottom=bottom)
  50. #定义字体
  51. self.font_size = Font(size=9)
  52. for col in self.upper_string_list:
  53. self.ws.column_dimensions[col].width = 20
  54. #创建表头第一行
  55. def create_row1(self):
  56. #把所有列合并
  57. self.ws.merge_cells(start_row=1, end_row=1, start_column=1, end_column=self.all_col)
  58. #写入值
  59. # self.ws.cell(row=1, column=1).value = value
  60. self.ws.cell(row=1, column=1).value = "{0}蒸汽压力记录表".format(self.sample_name)
  61. self.ws['A1'].alignment = self.alignment_style
  62. self.ws['A1'].font = Font(size=16, bold=True)
  63. self.create_row2_3()
  64. def create_row2_3(self):
  65. #把前五列,二三行单元格合并,并写入值
  66. for col in range(1, len(self.col_list)+1):
  67. self.ws.merge_cells(start_row=2, end_row=3, start_column=col, end_column=col)
  68. col_str = self.upper_string_list[col-1]+"2"
  69. self.ws[col_str] = self.col_list[col-1]
  70. self.ws[col_str].alignment = self.alignment_style
  71. self.ws[col_str].font = Font(size=12, bold=True)
  72. #把第二行第六列开始到最后列合并
  73. self.ws.merge_cells(start_row=2, end_row=2, start_column=len(self.col_list)+1, end_column=self.all_col)
  74. col_str = self.upper_string_list[len(self.col_list)]+"2"
  75. self.ws[col_str] = "实验过程压力记录"
  76. self.ws[col_str].alignment = self.alignment_style
  77. self.ws[col_str].font = Font(size=12, bold=True)
  78. #第三行第六列开始到最后列写入值
  79. for index, col_ltr in enumerate(self.upper_string_list[5:]):
  80. col_str = col_ltr+'3'
  81. self.ws[col_str] = "第{0}次压力记录".format(index+1)
  82. self.ws[col_str].alignment = self.alignment_style
  83. self.ws[col_str].font = Font(size=12, bold=True)
  84. def add_data(self):
  85. #第四行开始写入数据,所有数据居中对齐,水平居中
  86. for index, col in enumerate(self.upper_string_list):
  87. col_str = col+"4"
  88. self.ws[col_str] = self.data_list[index]
  89. self.ws[col_str].alignment = self.alignment_style
  90. self.ws[col_str].font = Font(size=12, bold=True)
  91. def create(self,value=None):
  92. if value:
  93. self.ws.cell(row=1, column=1).value = value
  94. self.create_row1()
  95. self.add_data()
  96. def save(self, filename):
  97. try:
  98. self.wb.save(filename)
  99. except:
  100. self.wb.save(filename[:-5] + str('_' + Utils.getFileName()) + filename[-5:])
  101. # 关闭excel
  102. self.close()
  103. def close(self):
  104. self.wb.close()
  105. if __name__ == '__main__':
  106. er = ExportReport(1, 2, 3, 4, 5, ['x', 's', 's', 'b','w'])
  107. er.create()
  108. 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. Servlet+JSP及Tomcat常见面试题(面试必备)

    1.  什么是servlet? servlet是用来处理客户端请求并产生动态网页内容的java类 2.  Tomcat的缺省端口是多少,怎么修改? a)      默认端口号是8080 b)      ...

  2. 【转载】 mybatis入门系列四之动态SQL

    mybatis 详解(五)------动态SQL 目录 1.动态SQL:if 语句 2.动态SQL:if+where 语句 3.动态SQL:if+set 语句 4.动态SQL:choose(when, ...

  3. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十七 ║Vue基础:使用Vue.js 来画博客首页+指令(一)

    缘起 书说前两篇文章<十五 ║ Vue前篇:JS对象&字面量&this>和 <十六 ║ Vue前篇:ES6初体验 & 模块化编程>,已经通过对js面向对 ...

  4. vue,vuex的后台管理项目架子structure-admin,后端服务nodejs

    之前写过一篇vue初始化项目,构建vuex的后台管理项目架子,这个structure-admin-web所拥有的功能 接下来,针对structure-admin-web的不足,进行了补充,开发了具有登 ...

  5. .NET Core微服务之开源项目CAP的初步使用

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.CAP简介 下面的文字来自CAP的Wiki文档:https://github.com/dotnetcore/CAP/wiki CAP ...

  6. .NET Core微服务之基于Steeltoe使用Hystrix熔断保护与监控

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 =>  Steeltoe目录快速导航: 1. 基于Steeltoe使用Spring Cloud Eureka 2. 基于Steelt ...

  7. ToastCustom【自定义显示风格的Toast】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 基于系统Toast的自定义显示风格的Toast. 效果图 代码分析 ToastCustom类基于系统Toast,不是继承Toast, ...

  8. 知识小罐头06(tomcat8请求源码分析 中)

    更正上一篇一个小错误,Connector中首先是将socket请求过来的信息封装成一个普通的Request对象(上一篇我写成HttpRequest对象,失误失误,根本就木有HttpRequest这样的 ...

  9. 自定义Visual Studio.net Extensions 开发符合ABP vnext框架代码生成插件[附源码]

    介绍 我很早之前一直在做mvc5 scaffolder的开发功能做的已经非常完善,使用代码对mvc5的项目开发效率确实能成倍的提高,就算是刚进团队的新成员也能很快上手,如果你感兴趣 可以参考 http ...

  10. IO流简要总结

    IO流小总结 IO流的本质就是用于数据的传输,根据流的方向的不同,有输入流.输出流.根据数据类型的不同,又有字节流.字符流. 字节流 字节输入流   InputStream 字节输出流   Outpu ...