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 Web开发模板引擎优缺点总结
May 06 Python
Python KMeans聚类问题分析
Feb 23 Python
Sanic框架基于类的视图用法示例
Jul 18 Python
详解python中的Turtle函数库
Nov 19 Python
对python中Json与object转化的方法详解
Dec 31 Python
python按行读取文件并找出其中指定字符串
Aug 08 Python
Python 转换RGB颜色值的示例代码
Oct 13 Python
Python 实现加密过的PDF文件转WORD格式
Feb 04 Python
基于keras中的回调函数用法说明
Jun 17 Python
弄清Pytorch显存的分配机制
Dec 10 Python
Python多线程 Queue 模块常见用法
Jul 04 Python
基于Python实现将列表数据生成折线图
Mar 23 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 获取MSN好友列表的代码(2009-05-14测试通过)
2009/09/09 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
Firefox window.close()的使用注意事项
2009/04/11 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
JavaScript里 ==与===区别详解
2016/08/16 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
2017/02/24 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
vue项目中使用ueditor的实例讲解
2018/03/05 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
2018/06/29 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 战前探营!
2014/05/21 DOTA
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
Python使用logging结合decorator模式实现优化日志输出的方法
2016/04/16 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
房地产销售计划书
2014/01/10 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
法语专业求职信
2014/07/20 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
如何在Python中创建二叉树
2021/03/30 Python
在Docker容器中部署SQL Server
2022/04/11 Servers
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技