当使用openpyxl库来获取Excel文件中的工作表列表时,可以按照以下步骤进行操作。我会逐步解释每一步:
(1)、导入openpyxl库:
import openpyxl
(2)、打开Excel文件:
# 指定Excel文件路径
excel_file_path = r'E:\UserData\Desktop\border_example.xlsx'
# 打开工作簿
workbook = openpyxl.load_workbook(excel_file_path)
(3)、获取工作表名称列表:
# 获取工作表名称列表
sheet_names = workbook.sheetnames
(4)、打印工作表名称列表:
# 打印工作表名称列表
for sheet_name in sheet_names:
print("工作表名称:", sheet_name)
import openpyxl
# 指定Excel文件路径
excel_file_path = r'E:\UserData\Desktop\border_example.xlsx'
# 打开工作簿
workbook = openpyxl.load_workbook(excel_file_path)
# 获取工作表名称列表
sheet_names = workbook.sheetnames
# 打印工作表名称列表
for sheet_name in sheet_names:
print("工作表名称:", sheet_name)
这个示例代码会打开指定的Excel文件,获取其中的工作表名称列表,并逐个打印出每个工作表的名称。
输出结果:
runfile('E:/UserData/Desktop/Excel/untitled1.py', wdir='E:/UserData/Desktop/Excel')
工作表名称: Sheet
工作表名称: Sheet1
工作表名称: Sheet2
工作表名称: Sheet3
工作表名称: Sheet4
(1)、导入所需的库:
首先,你需要导入openpyxl库。这就像是你要使用工具箱里的一个工具,这样你就可以处理Excel文件了。
(2)加载Excel文件:
使用load_workbook函数加载你的Excel文件。就好像打开一本书一样。
(3)选择工作表:
使用active属性或者通过名字选择要读取数据的工作表。就好像翻开这本书的某一页。
(4)读取数据:
使用工作表的单元格标识(比如"A1")来获取特定单元格的数据。
import openpyxl
import datetime
# 加载Excel文件
workbook = openpyxl.load_workbook(r'E:\UserData\Desktop\border_example.xlsx')
# 选择工作表
sheet = workbook.active
# 读取文本数据
text_cell = sheet['A1']
text_data = text_cell.value
print("文本数据:", text_data)
# 读取数字数据
number_cell = sheet['B1']
number_data = number_cell.value
print("数字数据:", number_data)
# 读取日期数据
date_cell = sheet['C1']
date_data = date_cell.value
formatted_date = date_data.strftime("%Y-%m-%d")
print("日期数据:", formatted_date)
执行结果:
runcell(0, 'E:/UserData/Desktop/Excel/untitled1.py')
文本数据: Hello, Excel!
数字数据: 42
日期数据: 2023-08-17
如果单元格中是文本,你可以直接使用.value来获取文本数据。
cell = sheet['A1']
text_data = cell.value
print("文本数据:", text_data)
如果单元格中是数字,也是使用.value,但是注意数字是没有引号的。
cell = sheet['B1']
number_data = cell.value
print("数字数据:", number_data)
处理日期略微不同。你需要导入datetime模块,并使用.value属性获取日期对象。
import datetime
cell = sheet['C1']
date_data = cell.value
print("日期数据:", date_data.strftime("%Y-%m-%d"))
如果单元格中包含布尔值(TRUE 或 FALSE),你可以像读取其他数据类型一样使用.value来获取它们。
bool_cell = sheet['D1']
bool_data = bool_cell.value
print("布尔值数据:", bool_data)
有时单元格可能是空的,没有任何数据。在这种情况下,.value将返回None,表示空值。
empty_cell = sheet['E1']
empty_data = empty_cell.value
print("空值数据:", empty_data)
Excel 还支持在单元格中使用公式。你可以通过.value获取计算后的结果,或者通过.formula获取原始公式。
formula_cell = sheet['F1']
formula_result = formula_cell.value
formula_original = formula_cell.formula
print("公式计算结果:", formula_result)
print("原始公式:", formula_original)
如果要读取单元格中的超链接,你可以使用hyperlinks属性来获取链接的信息:
hyperlink_cell = sheet['G1']
hyperlink_info = hyperlink_cell.hyperlink # 获取超链接信息
if hyperlink_info:
print("超链接数据:", hyperlink_info)
else:
print("该单元格没有超链接.")
from openpyxl import load_workbook
workbook = load_workbook('filename.xlsx') # 更改为你的文件名和路径
sheet = workbook.active # 获取活动工作表
或者,如果你知道工作簿中的工作表名称,可以使用下面的代码:
workbook = load_workbook('filename.xlsx')
sheet = workbook['sheetname'] # 更改为你的工作表名称
row_data = []
for row in sheet.iter_rows():
row_values = []
for cell in row:
row_values.append(cell.value)
row_data.append(row_values)
column_data = []
for column in sheet.iter_cols():
column_values = []
for cell in column:
column_values.append(cell.value)
column_data.append(column_values)
from openpyxl import load_workbook
# 加载Excel文件
workbook = load_workbook(r'E:\UserData\Desktop\border_example.xlsx') # 更改为你的文件名和路径
sheet = workbook.active # 获取活动工作表
# 获取行数据
row_data = []
for row in sheet.iter_rows():
row_values = []
for cell in row:
row_values.append(cell.value)
row_data.append(row_values)
# 获取列数据
column_data = []
for column in sheet.iter_cols():
column_values = []
for cell in column:
column_values.append(cell.value)
column_data.append(column_values)
# 打印行数据
print("行数据:")
for row in row_data:
print(row)
# 打印列数据
print("列数据:")
for column in column_data:
print(column)
当你需要对Excel表格中的数据进行统计、分析或可视化时,读取行列数据可以帮助你快速获取所需的数据。例如,计算平均值、总和、最大/最小值,或生成图表等。
from openpyxl import load_workbook
# 加载Excel文件
workbook = load_workbook('data.xlsx')
sheet = workbook.active
# 获取某一列数据并计算平均值
column_data = []
for column in sheet.iter_cols(min_row=2, max_row=sheet.max_row, min_col=2, max_col=2):
column_values = [cell.value for cell in column]
column_data.extend(column_values)
average = sum(column_data) / len(column_data)
print("平均值:", average)
# 统计每一行的总和
row_sums = []
for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row, min_col=3, max_col=7):
row_values = [cell.value for cell in row]
row_sum = sum(row_values)
row_sums.append(row_sum)
print("每一行的总和:")
for i, row_sum in enumerate(row_sums, start=2):
print(f"第{i}行: {row_sum}")
读取行列数据可以帮助将Excel中的数据导入到其他系统或格式中,或者将其他系统/格式的数据导入到Excel中。例如,将Excel数据导入到数据库中或将数据库数据导出为Excel表格。
from openpyxl import load_workbook
# 加载Excel文件
workbook = load_workbook('data.xlsx')
sheet = workbook.active
# 从Excel中读取数据并写入到CSV文件
import csv
with open('output.csv', 'w', newline='') as file:
writer = csv.writer(file)
for row in sheet.iter_rows(values_only=True):
writer.writerow(row)
通过读取行列数据,可以对Excel表格中的数据进行清洗、处理和转换。例如,删除空白行或列,格式化日期,更改数据类型等。
from openpyxl import load_workbook
# 加载Excel文件
workbook = load_workbook('data.xlsx')
sheet = workbook.active
# 删除所有空白行
rows_to_delete = []
for i, row in enumerate(sheet.iter_rows(), start=1):
if all(cell.value is None for cell in row):
rows_to_delete.append(i)
for row_index in sorted(rows_to_delete, reverse=True):
sheet.delete_rows(row_index)
# 格式化日期列
from openpyxl.utils import get_column_letter
date_column = 'A' # 假设第一列是日期列
for cell in sheet[f'{date_column}']:
if isinstance(cell.value, datetime.datetime):
formatted_date = cell.value.strftime('%Y-%m-%d')
sheet[cell.coordinate] = formatted_date
# 将数值列转换为整数
numeric_columns = ['B', 'C'] # 假设第二列和第三列是数值列
for column in numeric_columns:
for cell in sheet[f'{column}']:
if isinstance(cell.value, (float, int)):
sheet[cell.coordinate] = int(cell.value)
# 保存修改后的Excel文件
workbook.save('modified_data.xlsx')