相关文章推荐
无聊的日记本  ·  alltypes - ...·  1 年前    · 
低调的斑马  ·  【mybatis】java.sql.SQLE ...·  1 年前    · 
仗义的稀饭  ·  JDBC学习笔记 - 知乎·  2 年前    · 

用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...
使用PythonExcel文件中插入图片,这个功能之前学习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:.