Python 操作 Excel
flyfish
在Python中索引是从0开始的
各种读取方式
import pandas as pd
import numpy as np
# 生成10行10列的数据
data = np.random.rand(10, 10) # 使用随机数填充数据
df = pd.DataFrame(data, columns=[f'Col{i+1}' for i in range(10)])
# 将数据写入Excel文件
excel_file = 'output.xlsx'
df.to_excel(excel_file, index=False)
# 读取整个Excel文件
df_read = pd.read_excel(excel_file)
# 1. 读取前5行
first_five_rows = df_read.head(5)
print("First 5 rows:")
print(first_five_rows)
# 2. 读取后5行
last_five_rows = df_read.tail(5)
print("\nLast 5 rows:")
print(last_five_rows)
# 3. 读取前5列
first_five_columns = df_read.iloc[:, :5]
print("\nFirst 5 columns:")
print(first_five_columns)
# 4. 读取后5列
last_five_columns = df_read.iloc[:, -5:]
print("\nLast 5 columns:")
print(last_five_columns)
# 5. 只读取从第2行到第5行(注意:在Python中索引是从0开始的)
rows_2_to_5 = df_read.iloc[1:5] # 1是第2行,5是不包括第6行
print("\nRows 2 to 5:")
print(rows_2_to_5)
# 6. 只读取从第2列到第5列
columns_2_to_5 = df_read.iloc[:, 1:5] # 1是第2列,5是不包括第6列
print("\nColumns 2 to 5:")
print(columns_2_to_5)
# 7. 读取从第3行到第6行,从第4列到第7列的数据
subset_data = df_read.iloc[2:6, 3:7] # 2是第3行,6是不包括第7行;3是第4列,7是不包括第8列
print("\nSubset from row 3 to 6 and column 4 to 7:")
print(subset_data)
各种操作方式
假如一个Excel文件内容如下
工作表1
col1 col2 col3
0 1 2 3
工作表2
col1 col2 col3
0 4 5 6
操作如下
import pandas as pd
import sys
import os
#-------------------------------------------------------------------------
#路径的参考
# 获取脚本文件的绝对路径
script_path = sys.argv[0]
print(f"Script Path (from sys.argv[0]): {script_path}")
# 如果是相对路径,则转换为绝对路径
if not os.path.isabs(script_path):
script_path = os.path.abspath(script_path)
print(f"Absolute Script Path: {script_path}")
# 获取脚本所在目录
script_directory = os.path.dirname(script_path)
print(f"Script Directory: {script_directory}")
#-------------------------------------------------------------------------
# 读取Excel文件中的所有sheet
xls = pd.ExcelFile('example.xlsx')
# 获取所有的sheet名称
sheet_names = xls.sheet_names
print(sheet_names)
# 初始化一个空的DataFrame来存储结果
combined_df = pd.DataFrame()
# 遍历每一个sheet,并将其添加到combined_df中
for sheet in sheet_names:
df = pd.read_excel(xls, sheet_name=sheet)
combined_df = pd.concat([combined_df, df], ignore_index=True)
# 查看合并后的DataFrame
print(combined_df)
# 如果需要,可以将合并后的DataFrame保存为新的Excel文件
combined_df.to_excel('combined_output.xlsx', index=False)
#-------------------------------------------------------------------------
#选择特定的sheet读取
df = pd.read_excel('example.xlsx', sheet_name=sheet_names[0])
print(df)
df = pd.read_excel('example.xlsx', sheet_name=sheet_names[1])
print(df)
#-------------------------------------------------------------------------
#修改指定单元格的数据
# 读取Excel文件
df = pd.read_excel('modify.xlsx', sheet_name=sheet_names[0])
# 更改特定位置的值,不存在则新增
df.at[0, 'ColumnA'] = 123
df.at[0, 'col1'] = 456
# 将更改后的DataFrame保存回Excel
df.to_excel('modified_example.xlsx', index=False)
['工作表1', '工作表2']
col1 col2 col3
0 1 2 3
1 4 5 6
col1 col2 col3
0 1 2 3
col1 col2 col3
0 4 5 6