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写的PHPMyAdmin暴力破解工具代码
Aug 06 Python
用Python实现通过哈希算法检测图片重复的教程
Apr 02 Python
详解Python中类的定义与使用
Apr 11 Python
Python爬取当当、京东、亚马逊图书信息代码实例
Dec 09 Python
Django 静态文件配置过程详解
Jul 23 Python
Django中URL的参数传递的实现
Aug 04 Python
解决django model修改添加字段报错的问题
Nov 18 Python
python求绝对值的三种方法小结
Dec 04 Python
pycharm如何实现跨目录调用文件
Feb 28 Python
在TensorFlow中实现矩阵维度扩展
May 22 Python
Python实现猜拳与猜数字游戏的方法详解
Apr 06 Python
详解PyTorch模型保存与加载
Apr 28 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+Uploadify实现图片上传功能
2014/06/26 PHP
php接口数据加密、解密、验证签名
2015/03/12 PHP
PHP数组函数知识汇总
2016/05/12 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
Javascript计算时间差的函数分享
2011/07/04 Javascript
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
node.js中的fs.symlinkSync方法使用说明
2014/12/15 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
JavaScript动态提示输入框输入字数的方法
2015/07/27 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
js常用DOM方法详解
2017/02/04 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
微信小程序使用map组件实现解析经纬度功能示例
2019/01/22 Javascript
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
Flask入门教程实例:搭建一个静态博客
2015/03/27 Python
python使用RNN实现文本分类
2018/05/24 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
Python爬虫运用正则表达式的方法和优缺点
2019/08/25 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
雪山饭庄的创业计划书范文
2014/01/18 职场文书
个人承诺书
2014/03/26 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
见义勇为事迹材料
2014/12/24 职场文书
英文道歉信
2015/01/20 职场文书
毛主席纪念堂观后感
2015/06/17 职场文书
《领导干部从政道德启示录》学习心得体会
2016/01/20 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书