一、需求及解决思路
1.需求描述
要求批量处理excel文件,每个excel中包含多个sheet页,表与表之间sheet一样、表样一样,但填表的内容不同,要求批量填充指定单元格颜色(本实验用标准颜色:红色)


2.解决思路
S1:尝试对一个文件实现指定单元格填充
S2:尝试批量处理文件
二、准备工作
1.工具选择
开发工具:Jupter(安装anaconda后选择自带的Jupter)
其他工具:Excel
2.其他文件准备
(1)需要标注的单元格坐标

(2)源文件

(3)处理源文件后

三、效果展示

每个excel对应的该sheet页,均如上图所示
四、具体实现
1.源文件是xlsx文件,xlrd无法操作,要转化成xls或csv的格式

"""
xlsx 转 xls
"""
# -*- coding:utf-8 -*-
import os
import win32com.client as win32# 输入目录
inputdir = r'C:\Users\zhang.fan\Desktop\小学'
# 输出目录
outputdir = r'C:\Users\zhang.fan\Desktop\小学\小学xls'
if not os.path.exists(outputdir):os.mkdir(outputdir)# 三个参数:父目录;所有文件夹名(不含路径);所有文件名
for parent, dirnames, filenames in os.walk(inputdir):for fn in filenames:if fn.split('.')[-1] == "xlsx":filedir = os.path.join(parent, fn)print(filedir)excel = win32.gencache.EnsureDispatch('Excel.Application')wb = excel.Workbooks.Open(filedir)# xlsx: FileFormat=51# xls:  FileFormat=56wb.SaveAs((os.path.join(outputdir, fn.replace('xlsx', 'xls'))), FileFormat=56)wb.Close()excel.Application.Quit()

2.批量填充单元格

# 小学 指定行列,批量标记文件
def main():filename = os.listdir(r'C:/Users/zhang.fan/Desktop/小学/小学xls')print("*****读取成功*****")print(len(filename))styleBlueBkg = xlwt.easyxf('pattern: pattern solid, fore_colour red;')  # 红色for i in range(len(filename)):try:file_name = 'C:/Users/zhang.fan/Desktop/小学/小学xls/' + filename[i]# print(file_name)rb = xlrd.open_workbook(file_name, formatting_info = True)wb = copy(rb)ro1 = rb.sheets()[5]           ws1 = wb.get_sheet(5)   #指定修改的列alter_list = [(6,1),(6,2),(6,3),(6,4),(6,5),(6,6),(6,7),(6,8),(6,9),(6,10),(17,3),(16,6),(17,6),(18,9),(18,10)]for j in range(len(alter_list)):row,col = alter_list[j]# print(col,row)# ws11.write(row,col,ro1.cell(row, col).value,style)ws1.write(row,col,ro1.cell(row, col).value,styleBlueBkg)           print("sheet5***颜色标记成功***")ro2 = rb.sheets()[6]# wb = copy(rb)ws2 = wb.get_sheet(6)#指定修改的列alter_list = [(8,3),(9,3),(10,3),(11,3),(12,3),(13,3),(14,3),(16,3),(18,3),(36,3),(38,3),(39,3),(40,3),(41,3),(42,3),(43,3)]for j in range(len(alter_list)):row,col = alter_list[j]ws2.write(row,col,ro2.cell(row, col).value,styleBlueBkg)print("sheet6***颜色标记成功***")"""列举两个,其他省略"""# save_name = 'C:/Users/zhang.fan/Desktop/newtest/'+ filename[i]save_name = 'C:/Users/zhang.fan/Desktop/newdata/小学/{}'.format(filename[i])print(save_name)wb.save(save_name)print('***文件处理成功***')except Exception as e:passcontinueif __name__ == "__main__":main()

五、踩坑合集
1.读取的数据没有保留原文档格式,解决方法:添加参数formatting_info = True,默认是False

rb = xlrd.open_workbook(file_name, formatting_info = True)

2.若源文件是xlsx,使用save_name = 'C:/Users/zhang.fan/Desktop/newtest/'+ filename[i]
save后因扩展是.xlsx而无法打开文件,解决方法:在save时使用format更改文件后缀为xls
3.指定sheet时可以用sheetname指定
4.
六、改进
1.列举每个sheet页中需要标记的单元格坐标很繁琐,曾经尝试根据模板中已经标记好的颜色,自动解析出对应坐标,然后喂进代码,但尝试失败,按道理应该是可以

2.标记好的单元格颜色都是xlwt中能识别的标准色,视觉上给人的冲击感太强,不太美观,可以自定义颜色,目前没有做尝试

3.标记好的单元格默认连同边框一起填充,曾经尝试先填充颜色再加上边框(或先加边框再填充颜色),效果并不理想,cell总是会用最后一项操作覆盖之前的操作,目前不确定能不能对同一个单元格进行颜色填充和加边框的操作

python批量处理excel——给指定单元格填充颜色相关推荐

  1. 使用pandas把计算数据写入excel的指定单元格

    要使用 pandas 将计算数据写入 Excel 的指定单元格,您可以使用 pandas.DataFrame.to_excel() 方法. 首先,您需要使用 pandas.read_excel() 方 ...

  2. 怎样将Excel包含某字符的单元格填充颜色

    在处理数据的时候,xmyanke想将Excel中包含某字符的单元格填充蓝色,比较容易看清,弄了好一阵子都没完成,最后试用条件格式处理了一下,终于实现了. 比如要将A1到A12区间包含数字1的单元格填充 ...

  3. 使用NPOI设置Excel表的单元格背景颜色

    使用NPOI设置Excel表的单元格背景颜色 2016年12月15日 15:25:01 起个名字真的好难啊 阅读数:15091更多 个人分类: 文件操作 版权声明:本文为博主原创文章,未经博主允许不得 ...

  4. excel引用指定单元格数据_Excel数据查找引用函数详解,一看就会用 #办公技巧 #excel #职场

    Lookup函数 简介:在查找区域中搜索查找对象,并映射到结果区域,返回相同位置的值 Lookup函数 =LOOKUP(D2,A2:A6,B2:B6) 结果将找出与产品编号为1003相对应的产品名称 ...

  5. 如何给el-table表格的指定单元格设置颜色

    一.需求及效果图 最近的项目中,遇到给表格中指定单元格设置字体颜色,使用的是el-table做的,控制单元格字体颜色,每一行的最大值设置成绿色,最小值设置成红色,效果如下: 二.方法及代码 使用的是控 ...

  6. 10, excel vba 修改单元格的颜色

    看数据总是很累的,一堆密密麻麻的.哪个数据才是我想要的呢? 比如一列里有各种各样的数据,我想知道哪些单元格的数据大于11的? 又比如一列里有各种各样的数据,我想知道哪些单元格的数据大于111的? 这里 ...

  7. 批量提取多个excel文件指定单元格内容,并汇总到一个新excel文件里

    #-*- coding:utf-8 -*- import os import openpyxl import pandas as pd from pandas.core.frame import Da ...

  8. excel引用指定单元格数据_数据、运算符及单元格引用

    你好,我是小干部. 上回我们学习了excel 的公式组成以及编辑.这次接着往下学. 一.数据的分类 excel的数据可以分为以下5类:文本.数值.日期和时间.逻辑值和错误值. 其中: 文本不参与数学运 ...

  9. python使用openpyxl excel 合并拆分单元格

    再次编辑中,这次是在使用删除列的时候发现,合并单元格会出现漏删除情况,才想到用拆分单元格,没想到unmerge_cells(),worksheet.merged_cells返回的合并单元格对象居然不能 ...

  10. python如何对excel两个单元格求乘积_excel表格怎么求乘积_excel表格多个单元格怎么求积...

    excel是我们日常生活中常用的办公软件之一,经常拿来统计和运算.下面让学习啦小编为你带来excel表格多个单元格求积的方法. excel求积步骤如下: Excel中多个单元格相乘的乘法公式. 在E1 ...

最新文章

  1. python基础教程怎么样-怎样学习Python?Python入门必看
  2. MFC框架程序----实现十
  3. C# WinForm TreeView用法总结
  4. python 数字转十六进制_在Python中将整数转换为十六进制
  5. 二叉树三种遍历方式的非递归实现
  6. 质数因子 java_质数因子
  7. 你是如何管理你的时间的?-----时间管理与树的遍历
  8. 33. 数据类型转换
  9. 关于阿里云图标的使用 iconfont
  10. HTML5的骨架是什么,HTML5 骨架
  11. 成长的痛苦:流播放服务令音乐人版税受损
  12. 【ESP 保姆级教程】疯狂传感器篇 —— 案例:ESP8266 + MQ3酒精传感器 + 串口输出
  13. 深度学习中的类别激活热图可视化
  14. bigdecimal 平均数_用Java计算平均值
  15. php 验证 手机号码
  16. 解决PS(Photoshop)里面白色变成黄色的问题
  17. 乌班图配置 https ssl证书
  18. DCGAN生成动漫头像(附代码)
  19. URP Lit Shader解析(1)
  20. CAXA电子图版二次开发20190803

热门文章

  1. URLConnection 传入参数
  2. 软件资源版权声明与免责声明
  3. 一款免费好用的在线高效作图工具
  4. SQL注入漏洞-MySQL盲注
  5. 《个人信息保护法》正式施行,拒绝隐私泄露
  6. android 手机上设置呼叫转移
  7. 卡尔曼滤波器原理简介
  8. C语言实现一元二次方程的实根和复根
  9. decent compiled words
  10. java过滤器是用来干什么的_java过滤器有什么作用