Excel文件基本操作
1.1 创建新工作簿
手动操作:
- 打开Excel → 文件 → 新建 → 空白工作簿
- 快捷键:
Ctrl + N
Python操作(使用openpyxl):
python
from openpyxl import Workbook
# 创建新工作簿
wb = Workbook()
ws = wb.active
ws.title = "数据表"
# 保存文件
wb.save('新建工作簿.xlsx')
Python操作(使用pandas):
python
import pandas as pd
# 创建DataFrame
df = pd.DataFrame({
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 28],
'部门': ['销售', '技术', '市场']
})
# 保存为Excel文件
df.to_excel('新建工作簿.xlsx', index=False)
1.2 打开现有工作簿
手动操作:
- 文件 → 打开 → 选择文件
- 快捷键:
Ctrl + O - 双击Excel文件直接打开
Python操作(使用openpyxl):
python
from openpyxl import load_workbook
# 打开现有工作簿
wb = load_workbook('现有文件.xlsx')
ws = wb.active
# 读取数据
for row in ws.iter_rows(values_only=True):
print(row)
Python操作(使用pandas):
python
import pandas as pd
# 读取Excel文件
df = pd.read_excel('现有文件.xlsx')
print(df.head())
# 读取指定工作表
df = pd.read_excel('现有文件.xlsx', sheet_name='Sheet2')
# 读取多个工作表
excel_file = pd.ExcelFile('现有文件.xlsx')
df_dict = {sheet: excel_file.parse(sheet) for sheet in excel_file.sheet_names}
1.3 保存工作簿
手动操作:
- 保存:
Ctrl + S - 另存为:
F12或 文件 → 另存为 - 保存为不同格式:选择文件类型(.xlsx, .xls, .csv等)
Python操作:
python
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
# 保存为.xlsx格式
wb.save('文件名.xlsx')
# 使用pandas保存为不同格式
import pandas as pd
df = pd.DataFrame({'列1': [1, 2, 3]})
# 保存为Excel
df.to_excel('文件.xlsx', index=False)
# 保存为CSV
df.to_csv('文件.csv', index=False, encoding='utf-8-sig')
# 保存多个工作表
with pd.ExcelWriter('多表文件.xlsx') as writer:
df.to_excel(writer, sheet_name='表1', index=False)
df.to_excel(writer, sheet_name='表2', index=False)
工作表管理
2.1 创建新工作表
手动操作:
- 右键点击工作表标签 → 插入 → 工作表
- 点击工作表标签旁的
+按钮 - 快捷键:
Shift + F11
Python操作:
python
from openpyxl import Workbook
wb = Workbook()
# 创建新工作表
ws1 = wb.create_sheet("数据表1")
ws2 = wb.create_sheet("数据表2", 0) # 插入到第一个位置
# 设置工作表名称
ws1.title = "销售数据"
wb.save('多工作表.xlsx')
2.2 重命名工作表
手动操作:
- 双击工作表标签
- 右键点击工作表标签 → 重命名
Python操作:
python
from openpyxl import load_workbook
wb = load_workbook('文件.xlsx')
ws = wb['Sheet1']
# 重命名工作表
ws.title = "新名称"
wb.save('文件.xlsx')
2.3 删除工作表
手动操作:
- 右键点击工作表标签 → 删除
Python操作:
python
from openpyxl import load_workbook
wb = load_workbook('文件.xlsx')
# 删除指定工作表
del wb['Sheet2']
# 或使用remove方法
ws = wb['Sheet3']
wb.remove(ws)
wb.save('文件.xlsx')
2.4 复制/移动工作表
手动操作:
- 复制:右键工作表标签 → 移动或复制 → 勾选"建立副本"
- 移动:拖动工作表标签到目标位置
Python操作:
python
from openpyxl import load_workbook
from copy import copy
wb = load_workbook('文件.xlsx')
# 复制工作表
source = wb['Sheet1']
target = wb.copy_worksheet(source)
target.title = "Sheet1副本"
wb.save('文件.xlsx')
2.5 隐藏/显示工作表
手动操作:
- 隐藏:右键工作表标签 → 隐藏
- 显示:右键任意工作表标签 → 取消隐藏 → 选择要显示的工作表
Python操作:
python
from openpyxl import load_workbook
wb = load_workbook('文件.xlsx')
ws = wb['Sheet1']
# 隐藏工作表
ws.sheet_state = 'hidden'
# 显示工作表
ws.sheet_state = 'visible'
wb.save('文件.xlsx')
单元格操作
3.1 选择单元格
手动操作:
- 单个单元格:直接点击
- 连续区域:点击起始单元格,按住Shift,点击结束单元格
- 不连续区域:按住Ctrl,依次点击单元格
- 整行:点击行号
- 整列:点击列标
- 全选:点击行列交叉处或
Ctrl + A
快捷键:
Ctrl + Home:跳转到A1单元格Ctrl + End:跳转到最后使用的单元格Ctrl + 方向键:跳转到数据区域边缘
3.2 访问单元格(Python)
使用openpyxl:
python
from openpyxl import load_workbook
wb = load_workbook('文件.xlsx')
ws = wb.active
# 方法1:使用单元格坐标
cell = ws['A1']
print(cell.value)
# 方法2:使用行列索引(从1开始)
cell = ws.cell(row=1, column=1)
print(cell.value)
# 访问多个单元格
for row in ws['A1:C3']:
for cell in row:
print(cell.value)
# 访问整行
for cell in ws[1]:
print(cell.value)
# 访问整列
for cell in ws['A']:
print(cell.value)
使用pandas:
python
import pandas as pd
df = pd.read_excel('文件.xlsx')
# 访问单个单元格
value = df.iloc[0, 0] # 第1行第1列
value = df.loc[0, '列名'] # 使用列名
# 访问多个单元格
subset = df.iloc[0:3, 0:2] # 前3行前2列
subset = df.loc[:, ['列1', '列2']] # 指定列
3.3 插入/删除单元格
手动操作:
- 插入:选中单元格 → 右键 → 插入 → 选择插入方式
- 删除:选中单元格 → 右键 → 删除 → 选择删除方式
Python操作:
python
from openpyxl import load_workbook
wb = load_workbook('文件.xlsx')
ws = wb.active
# 插入行
ws.insert_rows(2, 3) # 在第2行插入3行
# 插入列
ws.insert_cols(2, 2) # 在第2列插入2列
# 删除行
ws.delete_rows(2, 3) # 从第2行开始删除3行
# 删除列
ws.delete_cols(2, 2) # 从第2列开始删除2列
wb.save('文件.xlsx')
3.4 合并/拆分单元格
手动操作:
- 合并:选中单元格区域 → 开始 → 合并后居中
- 拆分:选中合并的单元格 → 开始 → 取消合并单元格
Python操作:
python
from openpyxl import load_workbook
wb = load_workbook('文件.xlsx')
ws = wb.active
# 合并单元格
ws.merge_cells('A1:C1')
ws.merge_cells(start_row=2, start_column=1, end_row=4, end_column=3)
# 拆分单元格
ws.unmerge_cells('A1:C1')
# 写入合并单元格
ws['A1'] = '合并单元格内容'
wb.save('文件.xlsx')
数据输入与编辑
4.1 输入数据
手动操作:
- 直接输入:选中单元格,输入内容,按Enter
- 快速填充:输入数据,拖动单元格右下角的填充柄
- 自动填充序列:输入起始值,拖动填充柄
特殊输入:
- 日期:
2024-01-01或2024/1/1 - 时间:
14:30或14:30:00 - 分数:
0 1/2(输入0空格1/2) - 文本格式数字:先输入单引号
'001
Python操作:
python
from openpyxl import Workbook
from datetime import datetime, date
wb = Workbook()
ws = wb.active
# 输入文本
ws['A1'] = '姓名'
# 输入数字
ws['B1'] = 100
# 输入日期
ws['C1'] = date(2024, 1, 1)
# 输入时间
ws['D1'] = datetime.now()
# 输入公式
ws['E1'] = '=SUM(B1:B10)'
# 批量输入数据
data = [
['姓名', '年龄', '部门'],
['张三', 25, '销售'],
['李四', 30, '技术'],
['王五', 28, '市场']
]
for row in data:
ws.append(row)
wb.save('数据输入.xlsx')
4.2 编辑数据
手动操作:
- 双击单元格进入编辑模式
- 选中单元格按F2进入编辑模式
- 在编辑栏直接修改
Python操作:
python
from openpyxl import load_workbook
wb = load_workbook('文件.xlsx')
ws = wb.active
# 修改单元格值
ws['A1'] = '新值'
# 批量修改
for row in ws.iter_rows(min_row=2, max_row=10, min_col=1, max_col=1):
for cell in row:
cell.value = cell.value + '_修改'
wb.save('文件.xlsx')
4.3 复制粘贴
手动操作:
- 复制:
Ctrl + C - 剪切:
Ctrl + X - 粘贴:
Ctrl + V - 选择性粘贴:
Ctrl + Alt + V
选择性粘贴选项:
- 值:只粘贴值,不包含格式和公式
- 格式:只粘贴格式
- 公式:只粘贴公式
- 转置:行列互换
Python操作:
python
from openpyxl import load_workbook
wb = load_workbook('文件.xlsx')
ws = wb.active
# 复制单元格值
source_value = ws['A1'].value
ws['B1'].value = source_value
# 复制区域(使用pandas更方便)
import pandas as pd
df = pd.read_excel('文件.xlsx')
# 复制列
df['新列'] = df['原列']
# 转置
df_transposed = df.T
df.to_excel('文件.xlsx', index=False)
4.4 查找和替换
手动操作:
- 查找:
Ctrl + F - 替换:
Ctrl + H - 查找下一个:
Shift + F4
Python操作:
python
from openpyxl import load_workbook
wb = load_workbook('文件.xlsx')
ws = wb.active
# 查找并替换
for row in ws.iter_rows():
for cell in row:
if cell.value == '查找内容':
cell.value = '替换内容'
wb.save('文件.xlsx')
# 使用pandas进行替换
import pandas as pd
df = pd.read_excel('文件.xlsx')
df = df.replace('查找内容', '替换内容')
df.to_excel('文件.xlsx', index=False)
格式设置
5.1 字体格式
手动操作:
- 字体:开始 → 字体下拉框
- 字号:开始 → 字号下拉框
- 加粗:
Ctrl + B - 斜体:
Ctrl + I - 下划线:
Ctrl + U
Python操作:
python
from openpyxl import Workbook
from openpyxl.styles import Font
wb = Workbook()
ws = wb.active
# 设置字体
ws['A1'] = '标题'
ws['A1'].font = Font(
name='微软雅黑',
size=14,
bold=True,
italic=False,
color='FF0000' # 红色
)
wb.save('字体格式.xlsx')
5.2 单元格填充
手动操作:
- 填充颜色:开始 → 填充颜色
- 图案样式:开始 → 单元格格式 → 填充 → 图案样式
Python操作:
python
from openpyxl import Workbook
from openpyxl.styles import PatternFill
wb = Workbook()
ws = wb.active
# 设置背景色
ws['A1'] = '彩色单元格'
ws['A1'].fill = PatternFill(
start_color='FFFF00', # 黄色
end_color='FFFF00',
fill_type='solid'
)
wb.save('填充格式.xlsx')
5.3 边框设置
手动操作:
- 边框:开始 → 边框下拉框
- 自定义边框:开始 → 单元格格式 → 边框
Python操作:
python
from openpyxl import Workbook
from openpyxl.styles import Border, Side
wb = Workbook()
ws = wb.active
# 设置边框
thin_border = Border(
left=Side(style='thin'),
right=Side(style='thin'),
top=Side(style='thin'),
bottom=Side(style='thin')
)
ws['A1'] = '带边框'
ws['A1'].border = thin_border
wb.save('边框格式.xlsx')
5.4 对齐方式
手动操作:
- 水平对齐:开始 → 左对齐/居中/右对齐
- 垂直对齐:开始 → 顶端对齐/居中/底端对齐
- 文本换行:开始 → 自动换行
Python操作:
python
from openpyxl import Workbook
from openpyxl.styles import Alignment
wb = Workbook()
ws = wb.active
# 设置对齐
ws['A1'] = '居中对齐'
ws['A1'].alignment = Alignment(
horizontal='center', # 水平居中
vertical='center', # 垂直居中
wrap_text=True # 自动换行
)
wb.save('对齐格式.xlsx')
5.5 数字格式
手动操作:
- 数字格式:开始 → 数字格式下拉框
- 自定义格式:
Ctrl + 1→ 数字 → 自定义
常用格式代码:
0.00:保留两位小数#,##0:千位分隔符0%:百分比yyyy-mm-dd:日期格式¥#,##0.00:货币格式
Python操作:
python
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
# 设置数字格式
ws['A1'] = 1234.5678
ws['A1'].number_format = '#,##0.00' # 1,234.57
ws['B1'] = 0.85
ws['B1'].number_format = '0%' # 85%
ws['C1'] = 1234.56
ws['C1'].number_format = '¥#,##0.00' # ¥1,234.56
from datetime import date
ws['D1'] = date(2024, 1, 1)
ws['D1'].number_format = 'yyyy-mm-dd' # 2024-01-01
wb.save('数字格式.xlsx')
5.6 行高和列宽
手动操作:
- 调整行高:拖动行号之间的分隔线
- 调整列宽:拖动列标之间的分隔线
- 自动调整:双击分隔线
Python操作:
python
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
# 设置列宽
ws.column_dimensions['A'].width = 20
ws.column_dimensions['B'].width = 15
# 设置行高
ws.row_dimensions[1].height = 30
ws.row_dimensions[2].height = 25
# 自动调整列宽(需要遍历计算)
for column in ws.columns:
max_length = 0
column_letter = column[0].column_letter
for cell in column:
if cell.value:
max_length = max(max_length, len(str(cell.value)))
ws.column_dimensions[column_letter].width = max_length + 2
wb.save('行高列宽.xlsx')