【Python+Excel】批量操作Excel工作表和工作簿的5个实例

本文基于Python 的os和xlwingsm模块实现Excel的各种工作表和工作簿操作实例。

目录

模块os介绍:

xlwings模块简介:

案例实现过程:

1、批量新建并保存工作簿:

2、批量打开一个文件夹下的所有工作簿

3、批量重命名一个工作簿中的所有工作表

4、 在多个工作簿中批量新增工作表

5、 批量打印工作簿


模块os介绍:

os模块是Python和操作系统进行交互的一个接口,它提供了许多操作文件及文件夹的函数。

比如:

  • 要获取当前运行的Python代码文件的路径(即该文件的保存位置),可以用os模块中的getcwd()函数来实现。
import os
path = os.getcwd()
print(path)
  • 如果要查看某个文件夹包含的所有文件和子文件夹的名称,可以使用os模块中的listdir()函数。
import os
path = 'e:\\python'
file_list = os.listdir(path)
print(file_list)
  •  如果要分离一个文件的文件主名和扩展名,可以使用splitext()函数。
import os
path = 'example.xlsx'
separate = os.path.splitext(path)
print(separate)
  • os模块中的rename()函数可以重命名文件和文件夹,该函数的语法格式如下:rename(src, dst) 以下代码将D盘的“list”文件夹重命名为“newlist”。
import os
oldname = 'd:\\list'
newname = 'd:\\newlist'
os.rename(oldname, newname)

xlwings模块简介:

可以处理Excel文件的Python模块有很多,如XlsxWriter、xlrd、xlwt、xlutils、openpyxl和xlwings等。

下表对各个模块的功能进行了简单对比。

通过上表的对比可以发现,xlwings模块的功能是最齐全的。它不仅能读、写和修改两种格式的Excel文件(xls和xlsx),而且能批量处理多个Excel文件。

此外,xlwings模块还能与Excel VBA结合使用,实现更加强大的数据输入和分析功能。


案例实现过程:

1、批量新建并保存工作簿:

import xlwings as xw
app = xw.App(visible = True, add_book = False)
for i in range(6):
    workbook = app.books.add()
    workbook.save(f'e:\\PythonOffice\\test_table\\test{i}.xlsx')
    workbook.close()
app.quit()

 实现结果如下:

2、批量打开一个文件夹下的所有工作簿

实现思路:

  1. 文件夹内列出所有的文件名,并存入数组。
  2. 打开Excel工作簿
  3. 循环判断文件是否为Excel,如果是则打开文件。

实现代码:

import os
import xlwings as xw
file_path = 'e:\\PythonOffice\\test_table'
file_list = os.listdir(file_path) 
app = xw.App(visible = True, add_book = False)
for i in file_list:
    if os.path.splitext(i)[1] == '.xlsx':  
        app.books.open(file_path + '\\' + i)  

3、批量重命名一个工作簿中的所有工作表

 以下代码将工作表名中的销售替换为空白:

import xlwings as xw
app = xw.App(visible = False, add_book = False)
workbook = app.books.open('e:\\table\\统计表.xlsx')
worksheets = workbook.sheets
for i in range(len(worksheets)):
    worksheets[i].name = worksheets[i].name.replace('销售', '')
workbook.save('e:\\table\\统计表1.xlsx')
app.quit()

4、 在多个工作簿中批量新增工作表

文件夹中有5个工作簿,我们需要在每个工作簿中插入一个名为'产品销售区域'的工作表

 实现思路:

  1. 获取文件夹内所有工作簿文件名并存入数组
  2. 定义好新工作表名称
  3. 在循环中插入工作表

实现代码:

import os
import xlwings as xw
file_path = 'e:\\table\\销售表'
file_list = os.listdir(file_path)
sheet_name = '产品销售区域'
app = xw.App(visible = False, add_book = False)
for i in file_list:
    if i.startswith('~$'):
        continue
    file_paths = os.path.join(file_path, i)
    workbook = app.books.open(file_paths)
    sheet_names = [j.name for j in workbook.sheets]
    if sheet_name not in sheet_names:
        workbook.sheets.add(sheet_name)
        workbook.save()
app.quit()

5、 批量打印工作簿

 现在我们文件夹内有6个工作簿,我们需要将每个工作簿中名为产品分类表的数据全部打印出来。

 实现思路:

  1. 获取文件夹内所有工作簿文件名并存入数组
  2. 在循环中依次打开对应工作簿
  3. 在打开的工作簿中循环判断工作表名
  4. 如果表名为“产品分类表”则通过工作簿的api 属性直接调用VBA的PrintOut()函数来打印工作簿,该函数的语法格式和常用参数含义如下。
    PrintOut(From,To,Copies,Preview,ActivePrinter,PrintToFile,Collate,PrToFileName)

 实现代码:

import os
import xlwings as xw
file_path = 'e:\\table\\公司1'
file_list = os.listdir(file_path)
sheet_name = '产品分类表'
app = xw.App(visible = False, add_book = False)
for i in file_list:
    if i.startswith('~$'):
        continue
    file_paths = os.path.join(file_path, i)
    workbook = app.books.open(file_paths)
    for j in workbook.sheets:
        if j.name == sheet_name:
            j.api.PrintOut()
            break
app.quit()

猜你喜欢

转载自blog.csdn.net/agelee/article/details/121787407