有哪些可以做调查的网站,濮阳做网站推广的公司,wordpress怎么删除,教你如何建网站视频个人网站
文章首发于公众号#xff1a;小肖学数据分析
Excel是办公自动化的关键工具之一#xff0c;用于数据存储、处理和分析。
Python通过 openpyxl 库#xff0c;提供了强大的Excel操作能力#xff0c;让我们可以读取、写入、修改和创建复杂的Excel文件。
安装 open…个人网站
文章首发于公众号小肖学数据分析
Excel是办公自动化的关键工具之一用于数据存储、处理和分析。
Python通过 openpyxl 库提供了强大的Excel操作能力让我们可以读取、写入、修改和创建复杂的Excel文件。
安装 openpyxl
在开始之前确保你已经安装了 openpyxl 库。如果还没有安装可以使用以下命令
pip install openpyxl读取Excel文件
假设我们有一个名为 example.xlsx 的Excel文件我们可以使用openpyxl来读取它。
from openpyxl import load_workbook# 加载工作簿
workbook load_workbook(example.xlsx)# 选择活动的工作表
sheet workbook.active# 读取特定单元格的数据
cell_value sheet[A1].value
print(fThe value in A1 is: {cell_value})写入Excel文件
如果想要修改Excel文件你可以更改单元格的值并保存工作簿。
# 修改单元格内容
sheet[A1] New Value# 添加一行数据
sheet.append([1, data, 3.14])# 保存工作簿
workbook.save(example_modified.xlsx)创建图表
openpyxl 也允许你在Excel中创建图表来可视化数据。
from openpyxl.chart import BarChart, Reference# 选择图表的数据范围
chart_data Reference(sheet, min_col2, min_row1, max_col2, max_rowsheet.max_row)# 创建条形图
chart BarChart()# 添加数据和类别例如日期或名称
chart.add_data(chart_data, titles_from_dataTrue)# 将图表放入工作表中的特定位置
sheet.add_chart(chart, E2)# 保存工作簿
workbook.save(example_chart.xlsx)数据校验
openpyxl 支持数据校验让用户在输入数据时进行限制。
from openpyxl.worksheet.datavalidation import DataValidation
from openpyxl import load_workbook
# 加载工作簿
workbook load_workbook(example.xlsx)# 选择活动的工作表
sheet workbook.active
# 创建一个数据验证对象
dv DataValidation(typelist, formula1Item1,Item2,Item3, showDropDownTrue)# 添加数据验证到单元格
sheet.add_data_validation(dv)
dv.add(sheet[A2])# 保存工作簿
workbook.save(example_validation.xlsx)为了处理更复杂的Excel自动化任务如合并多个sheet页合并多个文件以及拆分sheet页你可以使用 openpyxl 进行编程。以下是每个任务对应的代码示例。
合并同一Excel文件中的多个sheet页
# 导入openpyxl库中的load_workbook模块用于加载已存在的Excel文件
from openpyxl import load_workbook
#os模块获取文件的路径、文件名等相关操作
import os# 加载含有多个Sheet页的Excel文件
workbook load_workbook(需合并的文件.xlsx)# 创建一个新的Sheet用于存放合并后的数据
merged_sheet_title 合并后
workbook.create_sheet(merged_sheet_title)# 获取新创建的Sheet对象
merged_sheet workbook[merged_sheet_title]# 初始化行计数器
row_counter 1# 获取当前工作目录
current_dir os.getcwd()# 遍历所有的Sheet
for sheet in workbook.sheetnames:# 跳过我们新建的合并Sheetif sheet merged_sheet_title:continue# 获取当前Sheet对象current_sheet workbook[sheet]# 如果是第一个Sheet包括标题行否则跳过标题行if row_counter 1:for row in current_sheet.iter_rows(values_onlyTrue):merged_sheet.append(row)row_counter 1else:for row in current_sheet.iter_rows(min_row2, values_onlyTrue):merged_sheet.append(row)# 检查文件是否存在
file_path 合并后的文件.xlsx
abs_file_path os.path.abspath(file_path)
if os.path.exists(file_path):response input(f{file_path} 已存在。是否覆盖(y/n): )if response.lower() ! y:print(操作已取消。)else:# 保存工作簿如果文件已存在则会被覆盖workbook.save(file_path)full_path os.path.abspath(file_path)print(f文件已覆盖到 {abs_file_path})
else:# 文件不存在直接保存workbook.save(file_path)full_path os.path.abspath(file_path)print(f文件已保存到 {abs_file_path})合并多个Excel文件中的对应sheet
假设你有多个Excel文件每个文件都有一个名为Data的sheet以下是如何合并它们的代码示例。
from openpyxl import load_workbook, Workbook# 创建一个新的Workbook对象来存放合并后的数据
merged_workbook Workbook()
merged_sheet merged_workbook.active
merged_sheet.title Merged Data# 假设您有一系列文件名这些Excel文件都包含一个名为Data的sheet
file_names [file1.xlsx, file2.xlsx, file3.xlsx]# 遍历所有文件
for file_index, file_name in enumerate(file_names):workbook load_workbook(file_name)sheet workbook[Data]# 如果是第一个文件保留标题行if file_index 0:for row in sheet.iter_rows(values_onlyTrue):merged_sheet.append(row)else:# 如果不是第一个文件跳过标题行for row in sheet.iter_rows(min_row2, values_onlyTrue):merged_sheet.append(row)# 保存新的合并后的工作簿
merged_workbook.save(merged_files.xlsx)拆分一个sheet页到多个sheet页
假设你有一个名为Data的sheet你希望根据某个条件例如每10行数据创建一个新的sheet进行拆分。
from openpyxl import load_workbook# 载入原始的工作簿
workbook load_workbook(example.xlsx)
# 获取需要拆分的工作表
original_sheet workbook[Data]# 设置每个新工作表的最大行数
rows_per_sheet 10# 提取标题行数据
titles [cell.value for cell in original_sheet[1]]# 初始化新工作表变量
new_sheet None# 从第二行开始迭代原始工作表的数据行以跳过标题行
for idx, row in enumerate(original_sheet.iter_rows(min_row2, values_onlyTrue), start1):# 每rows_per_sheet行数据创建一个新工作表并添加标题行if idx % rows_per_sheet 1:sheet_title fSheet_{(idx - 1) // rows_per_sheet 1}new_sheet workbook.create_sheet(titlesheet_title)new_sheet.append(titles)# 往新工作表添加当前行数据new_sheet.append(row)# 保存工作簿
workbook.save(example_splitted.xlsx)请注意这些示例中的代码需要适当修改以适应你的特定需求如文件名、sheet名、拆分条件等。同时确保在运行这些脚本之前备份所有原始文件以免不小心覆盖或丢失数据。