用openpyxl处理Excel数据还是蛮舒服的。同时也可以插入图片,不过插入图片有个弊端,那就是,它只是把图片按比例缩小了。要看大图你得拉大来看,并不舒服。于是,想着能否插入对象文件。双击直接就能够打开图片来看。emmmm,好吧。果断使用win32com封装了个方法出来。
Excel插入对象文件
废话不多说,上代码
# 这个模块是用于excel表格操作的,
# 包括插入文件对象的
# 另存xls为xlsx
import os
import win32com.client
class ExcelInsert(object):
def __init__(self, excel_file_path, sheet_name):
:param excel_file_path: 指定要操作的excel表格
:param sheet_name: 指定要操作的excel表格的表
:returns: None
self.filename = excel_file_path
# self.excel = win32com.client.Dispatch('Excel.Application') # 这个得在gencache.EnsureDispatch('Excel.Application') 有生成对应的缓存文件temp/gen_py/文件夹之后才能使用
self.excel = win32com.client.gencache.EnsureDispatch('Excel.Application') # 如果没有缓存文件,则生成缓存文件
# self.excel.Visible = True # 显式打开excel 调试设置True
self.book = self.excel.Workbooks.Open(excel_file_path)
self.sheet_name = self.book.Worksheets(sheet_name)
def insert_obj(self, insert_file_path, col, row, auto_wh=False):
向Excel文件里面插入对象
:param insert_file_path: 要插入文件的路径,可以插入图片、也可以插入文档等
:param col: 指定要插入的列
:param row: 指定要插入的行
:param auto_wh: 根据对象文件自适应行高
:returns: None
shape = self.sheet_name.Shapes.AddOLEObject(Filename=insert_file_path, Link=False) # 插图片附件
shape.Left = self.sheet_name.Cells(row, col).Left # 把定位附件到指定单元格 单位:磅
shape.Top = self.sheet_name.Cells(row, col).Top
if auto_wh:
self.sheet_name.Rows(row).RowHeight = shape.Height # 行高
self.sheet_name.Columns(col).ColumnWidth = shape.Width # 列宽
def save(self, name=None):
保存文件,name为自己想要命名文件的名字,不传的话,默认为"源文件名字+(new)"
:param name: 传入自己要命令的文件名
:returns: None
if not name:
path_list = self.filename.split(".")
path_list[-2] = path_list[-2] + "(new)"
path = ".".join(path_list)
else:
path = os.path.join(os.getcwd(), name)
if os.path.exists(path):
os.remove(path)
self.book.SaveAs(path)
self.book.Close()
self.excel.Application.Quit()
def __del__(self):
if __name__ == '__main__':
a = ["A", "B", "C", "D", "E"]
path = os.getcwd()
filename = "../temp/test.xlsx"
filename = os.path.join(path, filename)
img_name = os.path.join(path, "../temp/baiyu_logo.jpg")
# img_name = os.path.join(path, "../temp/Aword.docx")
excel = ExcelInsert(filename, "Sheet1")
for col in a:
excel.insert_obj(img_name, col, 20)
excel.save() # 调用保存方法
源代码例程
https://github.com/BaiYu96/ExcelOpera.git
1、有时候觉得当程序员也挺好的,能够通过自己的双手,通过Google,搜索出你要的解决方案,然后灵活的使用ctrl+c,ctrl+v把想法实现hhhhh
2、太难了,连excel表格都能有对象了。我。。。转念一想,程序员还怕没对象?new一个出来就好了hhhhhh
前言用openpyxl处理Excel数据还是蛮舒服的。同时也可以插入图片,不过插入图片有个弊端,那就是,它只是把图片按比例缩小了。要看大图你得拉大来看,并不舒服。于是,想着能否插入对象文件。双击直接就能够打开图片来看。emmmm,好吧。这该死的念头。Excel插入对象文件废话不多说,上代码结束语太难了,连excel表格都能有对象了。我。。。算了,程序员还怕没对象?new一个出来就好了hhhhhh...
使用Python向Excel文件中插入图片,这个功能之前学习xlwt的时候通过xlwt模块实现过。那时候是在公司做的尝试,印象中插入的图片最终缩小为了一个单元格,同时由于公司的加密系统如此实现了图片插入的Excel文件不能够再次打开。
这次试用XlsxWriter这个模块,推测这个模块应该是具有比xlwt强大的多的功能。代码实现如下:
#!/usr/bin/python
import xlwt
# from xxx import xxx as xxx,从某个模块导入某个函数并as换个名字
from alibabacloud_waf_openapi20190910.client import Client as waf_openapi20190910Client
from alibabacloud_tea_openapi import models as open_api_
os模块是python和操作系统进行交互的一个接口,os模块提供了许多操作文件和文件夹的函数。我是在我的pycharm里面写的代码,测试一下我写的这个python文件路径
运行结果:
表明当前运行的python代码文件保存在C盘下\Users\hs\PycharmProjects\Data\PyEx在D盘下创建一个文件夹命名为list,在该文件夹下创建一个子文件夹(命名“文件夹1“)和文本文件(test.txt)
例:列出list文件夹下所有文件和子文件夹的名称
运行结果:
从结果可以看出,split
from openpyxl import load_workbook # 加载工作表
workbook = load_workbook(filename="新建表.xlsx")
sheet = workbook.active
sheet["A1"] = "你好啊
from openpyxl import load_workbook
wb = load_workbook(‘需要导入的excel文件路径’)
sheet = wb.active
conn = pymysql.connect(
user=“用户名”,
password=“密码”,
port=3306,
host=“地址”,
db=“数据库名”,
charset=“utf8”#字符集
cur = conn.
首先,本代码已调试通过,环境Windows10,python3.8
pip install pywin32(注意:它自动安装你Python对应的版本,目前一些网址上可以下载的pywin32只到python3.6)
打开已有的CrisBook.xlsx文件,sheet页:'Operational Status Of SITE',自己要改成对应自己需要的sheet页名称
import win32com.client
if __name__ == "__main__":
filename = "C:.