python 使用xlsxwriter循环向excel中插入数据和图片的操作


Posted in Python onJanuary 01, 2021

写入Excel中后有显示第一列客户款号总库存这些,开始写在第12行第一列开始写入,一行写入5个,然后再隔12行,再写入下边的数据,图片需要对应客户款号在Excel写入图片,类似下面的格式

python 使用xlsxwriter循环向excel中插入数据和图片的操作

python 使用xlsxwriter循环向excel中插入数据和图片的操作

import xlsxwriter
import os
#以空字符填充缺失值,不然写入数据会报错
data.fillna('',inplace=True)
#创建一个新Excel文件并添加一个工作表。
workbook = xlsxwriter.Workbook('images.xlsx')
worksheet = workbook.add_worksheet()
# # 加宽第2列,,根据图片缩放大小进行调整。
worksheet.set_column('B:B', 20)
worksheet.set_column('D:D', 20)
worksheet.set_column('F:F', 20)
worksheet.set_column('H:H', 20)
##写入数据和图片
for i in range(len(data)):
  for j in range(4):
    worksheet.write(i//5*16+j+12,i%5*2 ,['客户款号','总库存','零售数量','前一周'][j])
    worksheet.write(i//5*16+j+12,i%5*2+1 ,data.iloc[i,0::].values[j])
    #插入图片,insert_image(位置行,位置列,文件名,缩放比例)
  if data.iloc[i,0::].values[0]+'.jpg' not in os.listdir('.\img\\'):
    print(i,'找不到',data.iloc[i,0::].values[0]+'.jpg')
  else:
    worksheet.insert_image(i//5*16,i%5*2+1,'img/'+data.iloc[i,0::].values[0]+'.jpg',{'x_scale': 0.1, 'y_scale': 0.12}) 
    print(i,'写入成功!')
  i+=1
workbook.close()
0 写入成功!
1 写入成功!
2 找不到 N038400237.jpg
3 找不到 N038400301.jpg
4 找不到 N039400310.jpg
5 找不到 N038400552.jpg
6 写入成功!
7 找不到 N038401101.jpg
8 找不到 N039400105.jpg
9 找不到 N039400219.jpg

效果如下:

python 使用xlsxwriter循环向excel中插入数据和图片的操作

当然还有合并单元格,设置单元格格式,以及处理图片的操作没写,有时间再来补充!

补充:python对excel表格处理需要导入相关的库:

(1)、操作xls格式的表格文件:

读取:xlrd

写入:xlwt

修改(追加写入):xlutils

(2)、操作xlsx格式的表格文件:

读取/写入:openpyxl

*如果用操作xls的方法去写入xlsx文件,会导致文件损坏无法打开;反之一样。

(一)、操作xls格式表格

1、读取excel表格数据

import xlrd  #从excle里读数据
import xlwt  #创建新的表格写入数据
import xlutils #往已有表格中追加数据
 
class IOExcel(object):
  def __init__(self,file):
    self.file = file
 
  def get_sheet(self,sheetname):
    excelfile=xlrd.open_workbook(self.file)
    self.sheet = excelfile.sheet_by_name(sheetname)
    return self.sheet
  #获取第*行的数据
  def get_rowData(self,row):
    cols = self.sheet.ncols  #获取sheet页有多少列
    Cells = []
    for i in range(0,cols):
      Cells.append(self.sheet.cell(row,i).value)
    return Cells

2、创建表格写入数据

def write_excel(self,sheet_name, value):
  index = len(value) # 获取需要写入数据的行数
  workbook = xlwt.Workbook() # 新建一个工作簿
  sheet = workbook.add_sheet(sheet_name) # 在工作簿中新建一个表格
  for i in range(0, index):
    for j in range(0, len(value[i])):
      sheet.write(i, j, value[i][j])   #向表格中写入数据(对应的行和列)
  workbook.save(self.file)   # 保存工作簿

3、向已存在表格中追加数据

def write_excel_xls_append(self,value):
  index = len(value) # 获取需要写入数据的行数
  workbook = xlrd.open_workbook(self.file) # 打开工作簿
  sheets = workbook.sheet_names() # 获取工作簿中的所有表格
  worksheet = workbook.sheet_by_name(sheets[0]) # 获取工作簿中所有表格中的的第一个表格
  rows_old = worksheet.nrows # 获取表格中已存在的数据的行数
  new_workbook = copy(workbook) # 将xlrd对象拷贝转化为xlwt对象
  new_worksheet = new_workbook.get_sheet(0) # 获取转化后工作簿中的第一个表格
  for i in range(0, index):
    for j in range(0, len(value[i])):
      new_worksheet.write(i+rows_old, j, value[i][j]) # 追加写入数据,注意是从i+rows_old行开始写入
  new_workbook.save(self.file) # 保存工作簿

(二)、操作xlsx格式表格

wb = openpyxl.Workbook()  #创建一个新的excel
we = wb.create_sheet('第二页',0) #修改sheet页的名字;设置插入sheet页的位置,默认在上一页后面( 初始创建的excel是只有一个默认sheet页的,所以设置位置的值大于1效果都一样,都是在默认sheet页的后面接着)
# we.title = '你好' # 修改sheet页的名字
#操作单元格
we['A1']=123124
we['B2']='你好'
print(we.cell(1,2,'123123').value)  #设置cell的行号和列号和值,返回cell的值
wb.save('C:\\Users\\t_ful\\PycharmProjects\\test\\element\\t.xlsx')  #保存表格

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
安装Python和pygame及相应的环境变量配置(图文教程)
Jun 04 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
Jan 24 Python
python实现单向链表详解
Feb 08 Python
Python切片索引用法示例
May 15 Python
Python实现的连接mssql数据库操作示例
Aug 17 Python
python utc datetime转换为时间戳的方法
Jan 15 Python
Python学习笔记之函数的定义和作用域实例详解
Aug 13 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
Aug 23 Python
Tensorflow设置显存自适应,显存比例的操作
Feb 03 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
Mar 31 Python
Selenium使用Chrome模拟手机浏览器方法解析
Apr 10 Python
win10安装python3.6的常见问题
Jul 01 Python
python安装mysql的依赖包mysql-python操作
Jan 01 #Python
python UDF 实现对csv批量md5加密操作
Jan 01 #Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 #Python
python matlab库简单用法讲解
Dec 31 #Python
Pytorch1.5.1版本安装的方法步骤
Dec 31 #Python
python爬虫基础之urllib的使用
Dec 31 #Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
Dec 31 #Python
You might like
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
利用PHP命令行模式采集股票趋势信息
2016/08/09 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
2017/04/20 PHP
javascript学习网址备忘
2007/05/29 Javascript
jQuery 行级解析读取XML文件(附源码)
2009/10/12 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
JavaScript中ES6字符串扩展方法
2016/08/26 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
vue 组件简介
2020/07/31 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
Python Socket传输文件示例
2017/01/16 Python
python实现稀疏矩阵示例代码
2017/06/09 Python
浅谈Python 的枚举 Enum
2017/06/12 Python
python编写分类决策树的代码
2017/12/21 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
2018/01/31 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
python实现在一个画布上画多个子图
2020/01/19 Python
python3注册全局热键的实现
2020/03/22 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
早晨薰衣草在线女性精品店:Morning Lavender
2021/01/04 全球购物
综合办公室主任职责
2013/12/16 职场文书
工厂见习报告范文
2014/10/31 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
信用卡收入证明范本
2015/06/12 职场文书
2015国庆节感想
2015/08/04 职场文书
tp5使用layui实现多个图片上传(带附件选择)的方法实例
2021/11/17 PHP