【Python】按升序排列 Excel 工作表
2023-12-13 03:36:49
发现按名称对 Excel 工作表进行排序很麻烦,因此创建了一个代码来使用 Python 的 openpyxl 对它们进行排序。
1. 本次创建的代码概述
- 在GUI中指定一个Excel文件(使用Tkinter。这是一个标准模块,因此不需要安装)
- 加载Excel文件(使用openpyxl,由于它不是标准模块,如果没有安装,需要运行pip install openpyxl)
- 获取Excel工作表的名称并将其按升序存储在列表中
- 将工作表排列在 Excel 工作表的末尾(并指定字体)
- 将 Excel 工作簿单独保存为sorted_<book_name>.xlsx
2. 实际代码
import os
from tkinter import Tk
from tkinter import filedialog
from openpyxl import load_workbook
from openpyxl.styles.fonts import Font
current_directory = os.path.dirname(__file__)
# Tkinter 配置
root = Tk()
root.geometry("0x0") # window大小为 0
root.overrideredirect(1) # window删除标题栏
file_types = (
("excel file", "*.xlsx"),
)
# 所选文件的绝对路径
selected_file = filedialog.askopenfilename(initialdir=current_directory, filetypes=file_types)
# 所选文件的名称
file_name = os.path.basename(selected_file)
# Excel 工作表字体
font = Font(name="Yu Gothic", size=12)
# 加载 Excel 文件
wb = load_workbook(selected_file)
# Excel工作表列表(升序)
ws_title_list = sorted([ws.title for ws in wb.worksheets])
ws_length = len(ws_title_list) - 1
# 执行 Excel 工作表排序
for ws_title in ws_title_list:
ws = wb[ws_title]
for row in range(ws.max_row):
if ws.max_row != 1:
for col in range(ws.max_column):
ws.cell(row=row+1, column=col+1).font = font
wb.move_sheet(ws, offset=ws_length)
wb.save(selected_file.replace(file_name, f"sorted_{file_name}"))
三、总结
创建这段代码是因为每次都按升序排列工作表很麻烦。 由于快速创建了它,所以无法弄清楚想要对哪些工作表进行排序,哪些工作表不需要(例如,不对某些工作表进行排序),所以正在考虑将其作为下一个挑战。
文章来源:https://blog.csdn.net/Allan_lam/article/details/134880395
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!