如何利用Python批量处理行、列和单元格详解

 更新时间:2021年09月06日 11:36:17   作者:落春只在无意间  
因为之后的工作可能会经常用到excel,而且也不想荒废Python,出于为以后做准备以防不时之需,下面这篇文章主要给大家介绍了关于如何利用Python批量处理行、列和单元格的相关资料,需要的朋友可以参考下

精确调整工作表的行高和列宽

步骤

  1. 打开工作簿。
  2. 遍历所有工作表

核心代码

for i in workbook.sheets:
	value = i.range('A1').expand('table')
	value.column_width = 12
	value.row_height = 20
workbook.save()

批量更改多个工作簿的数据格式

步骤:

  1. 列出文件夹中所有子文件
  2. 遍历打开子文件
  3. 遍历工作表
  4. 获取工作表的最后一行
  5. 将指定列从上到下修改

核心代码

#遍历工作表
for j in workbook.sheets:
	# 获取最后一行
	row_num = j['A1'].current_region.last_cell.row
	# 数据格式修改
	j['A2:A{}'.format(row_num)].number_format = 'm/d'
	j['D2:D{}'.format(row_num)].number_format = '¥#,##0.00'
workbook.save()
workbook.close()

使用xwings模块中的number format属性来设置单元格区域中数据的格式。该属性的取值为一个代表特定格式的字符串,与Excel的“设置单元格格式”

对话框中“数字”选项卡下设置的格式对应。

批量更改工作簿的外观格式

难点应该是外观格式如何更改了吧,这里介绍一些常用的外观格式。

j 是工作表

设置字体格式

修改字体为宋体

j['A1:H1'].api.Font.Name = '宋体'

修改字号

j['A1:H1'].api.Font.Size= 10  # 10磅

字体加粗

j['A1:H1'].api.Font.Bold= True  

字体颜色

# 白色
j['A1:H1'].api.Font.Color= xw.utils.rgb_to_int((255,255,255)) 

单元格填充颜色

# 填充颜色为黑色
j['A1:H1'].Color= xw.utils.rgb_to_int((0,0,0)) 

对齐方式

# 水平对齐方式为 居中
j['A1:H1'].api.HorizontalAlignment = xw.constants.HAlign.xlHAlignCenter

# 垂直对齐方式为 居中
j['A1:H1'].api.VerticalAlignment= xw.constants.VAlign.xlVAlignCenter

以上是一列的如果是正文,j['A1:H1']变成 j['A2'].expand('table') 就可以了

添加合适粗细的边框

# 遍历所有的单元格
for cell in j['A1'].expand('table'):
	for b in range(7,12):
		# 设置单元格的边框线型
		cell.api.Borders(b).LineStyle = 1
		# 设置单元格的边框粗细
		cell.api.Borders(b).Weight = 2

替换工作簿的行数据

核心代码

# 遍历工作表
for j in eorkbook.sheets:
	# 获取工作表数据
	value = j['A2'].expand('table').value
	#按行遍历工作表数据
	for index,val in enumerate(value):
		# 判断行数据是否是这个
		if val == ['背包',16,65]:
			# 是的话替换为新数据
			value[index] = ['双肩包',36,79]
	#将完成替换的数据写入工作表中
	j['A2'].expand('table').value = value
workbook.save()

enumerate()是Python的内置函数,用于将一个可遍历的数据对象(如列表、元组或字符串等)组合为一个索引序列,可同时得到数据对象的索引及对应的值,一般用在for语句当中。该函数的语法格式和常用参数含义如下。

enumerate(sequenxe,[start=0])
# start 是索引的起始位置

如果是修改指定行什么办呢?因为列是在行的第几个单元格中我们可以按如下代码进行修改

#按行遍历工作表数据
for index,val in enumerate(value):
	# 修改第三个单元格,即第index行,第 3列,下标是从0开始的
	val[2] = val[2] + 1
	# 替换整行数据
	value[index] = val

提取指定数据

import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False) 
workbook = app.books.open('采购表.xlsx')  
worksheet = workbook.sheets
data = []
for i in worksheet:
    values = i.range('A1').expand().options(pd.DataFrame).value
    # 一次性提取工作表中所有符合条件的行数据
    filtered = values[values['采购物品'] == '复印纸'] 
    if not filtered.empty: 
        data.append(filtered)
new_workbook = xw.books.add() 
new_worksheet = new_workbook.sheets.add('复印纸') 
new_worksheet.range('A1').value = pd.concat(data, ignore_index = False) 
new_workbook.save('复印纸.xlsx')
workbook.close()
app.quit()

提取列数据

import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False) 
workbook = app.books.open('采购表.xlsx')
worksheet = workbook.sheets 
column = ['采购日期', '采购金额']
data = []
for i in worksheet:
    values = i.range('A1').expand().options(pd.DataFrame, index = False).value
    filtered = values[column]  
    data.append(filtered)
new_workbook = xw.books.add()  
new_worksheet = new_workbook.sheets.add('提取数据') 
new_worksheet.range('A1').value = pd.concat(data, ignore_index = False).set_index(column[0])
new_workbook.save('提取表.xlsx') 
workbook.close()
app.quit()

追加行数据

import os
import xlwings as xw
newContent = [['双肩包', '64', '110'], ['腰包', '23', '58']]
app = xw.apps.add()
file_path = '分部信息'  
file_list = os.listdir(file_path)  
for i in file_list:  
    if os.path.splitext(i)[1] == '.xlsx':  
        workbook = app.books.open(file_path + '\\' + i)  
        worksheet = workbook.sheets['产品分类表']
        values = worksheet.range('A1').expand()
        number = values.shape[0]  
        worksheet.range(number + 1, 1).value = newContent  
        workbook.save()
        workbook.close()
app.quit()

提取所有工作表的唯一值

import xlwings as xw
app = xw.App(visible = True, add_book = False)
workbook = app.books.open('上半年销售统计表.xlsx')
data = []
for i, worksheet in enumerate(workbook.sheets):
    values = worksheet['A2'].expand('down').value
    data = data + values
data = list(set(data))
data.insert(0, '书名')
new_workbook = xw.books.add()
new_worksheet = new_workbook.sheets.add('书名')
new_worksheet['A1'].options(transpose = True).value = data
new_worksheet.autofit()
new_workbook.save('书名.xlsx')
workbook.close()
app.quit()

总结

到此这篇关于如何利用Python批量处理行、列和单元格的文章就介绍到这了,更多相关Python批量处理行、列和单元格内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python匿名函数及应用示例

    Python匿名函数及应用示例

    这篇文章主要介绍了Python匿名函数及应用,结合实例形式分析了Python匿名函数的功能、定义及函数作为参数传递的相关应用操作技巧,需要的朋友可以参考下
    2019-04-04
  • Python使用while循环花式打印乘法表

    Python使用while循环花式打印乘法表

    今天小编就为大家分享一篇关于Python使用while循环花式打印乘法表,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Python三种打包exe方法案例教程

    Python三种打包exe方法案例教程

    这篇文章主要介绍了Python三种打包exe方法案例教程,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • python3学习笔记之多进程分布式小例子

    python3学习笔记之多进程分布式小例子

    本篇文章主要介绍了python3学习笔记之多进程分布式小例子,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • python提取excel一列或多列数据另存为新表代码实例

    python提取excel一列或多列数据另存为新表代码实例

    在日常的工作中,其实就是用鼠标进行数据筛选,然后选择你想要这一行数据进行复制,下面这篇文章主要给大家介绍了关于python提取excel一列或多列数据另存为新表的相关资料,需要的朋友可以参考下
    2024-06-06
  • Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作

    Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作

    这篇文章主要介绍了Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python Socketserver实现FTP文件上传下载代码实例

    Python Socketserver实现FTP文件上传下载代码实例

    这篇文章主要介绍了Python Socketserver实现FTP文件上传下载代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • OpenCV图像轮廓的绘制方法

    OpenCV图像轮廓的绘制方法

    这篇文章主要为大家详细介绍了OpenCV图像轮廓的绘制方法,以及测试几何图形、花朵图形轮廓,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • TensorFlow 模型载入方法汇总(小结)

    TensorFlow 模型载入方法汇总(小结)

    这篇文章主要介绍了TensorFlow 模型载入方法汇总(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Opencv python 图片生成视频的方法示例

    Opencv python 图片生成视频的方法示例

    这篇文章主要介绍了Opencv python 图片生成视频的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论