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实现人人网登录示例分享
Jan 19 Python
Python操作列表的常用方法分享
Feb 13 Python
在Python程序中操作文件之flush()方法的使用教程
May 24 Python
python字符串连接方法分析
Apr 12 Python
python logging 日志轮转文件不删除问题的解决方法
Aug 02 Python
Python实现运行其他程序的四种方式实例分析
Aug 17 Python
Python paramiko模块的使用示例
Apr 11 Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 Python
对Python函数设计规范详解
Jul 19 Python
DataFrame.to_excel多次写入不同Sheet的实例
Dec 02 Python
tensorflow 环境变量设置方式
Feb 06 Python
Python实现淘宝秒杀功能的示例代码
Jan 19 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
CI(CodeIgniter)框架介绍
2014/06/09 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
js 居中漂浮广告
2010/03/21 Javascript
jquery调用wcf并展示出数据的方法
2011/07/07 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
js实现数组冒泡排序、快速排序原理
2016/03/08 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
用js制作淘宝放大镜效果
2020/10/28 Javascript
几行js代码实现自适应
2017/02/24 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
浅谈Vue.js组件(二)
2019/04/09 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
外企办公室竞聘演讲稿
2013/12/29 职场文书
校园网站的创业计划书范文
2013/12/30 职场文书
如何写好优秀的创业计划书
2014/01/30 职场文书
党课知识竞赛主持词
2014/04/01 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
社区节水倡议书
2015/04/29 职场文书
法定代表人资格证明书
2015/06/18 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
最新最全的手机号验证正则表达式
2022/02/24 Javascript