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 相关文章推荐
在Django框架中编写Contact表单的教程
Jul 17 Python
利用python爬取斗鱼app中照片方法实例
Dec 03 Python
pandas实现选取特定索引的行
Apr 20 Python
python 从csv读数据到mysql的实例
Jun 21 Python
Linux上使用Python统计每天的键盘输入次数
Apr 17 Python
python操作文件的参数整理
Jun 11 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
阿里云ECS服务器部署django的方法
Aug 29 Python
pandas-resample按时间聚合实例
Dec 27 Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 Python
Python图片处理模块PIL操作方法(pillow)
Apr 07 Python
分析Python感知线程状态的解决方案之Event与信号量
Jun 16 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
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
javaScript中Math()函数注意事项
2015/06/18 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
2015/07/27 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
2016/05/27 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
Angular中管道操作符(|)的使用方法
2017/12/15 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
Python下的twisted框架入门指引
2015/04/15 Python
Django接受前端数据的几种方法总结
2016/11/04 Python
python爬虫实现教程转换成 PDF 电子书
2017/02/19 Python
Python制作刷网页流量工具
2017/04/23 Python
python实现二叉树的遍历
2017/12/11 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
2020/10/30 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
用python爬虫批量下载pdf的实现
2020/12/01 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
python绘制雷达图实例讲解
2021/01/03 Python
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
ajax是什么及其工作原理
2012/02/08 面试题
英语辞职信范文
2015/02/28 职场文书
恋恋笔记本观后感
2015/06/16 职场文书
运动会通讯稿600字
2015/07/20 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers