当前位置: 首页 > news >正文

Python读取Excel中指定列的所有单元格内容

一、Excel文件内容

在这里插入图片描述

二、具体操作

定义一个函数,将大写英文字母转换成对应的数字。如下:

########### todo: 将大写英文字母char转换成对应的数字,如'A'转换成1,'C'转换成3
def alphabet2number(char):result = ord(char) - ord('A') + 1 # ord('A')将字母“A”转换成ascii 65return result

接下来,读取Excel文件中的指定表单Sheet2,这里用到了pandas库。如下:

excel_file_path = './other_files/test_excel.xlsx'
excel_sheet_name = 'Sheet2'
column_char = 'J'# todo:从Excel文件中,读取指定的表单sheet
excel_file = pd.read_excel(excel_file_path, excel_sheet_name)
print('打印excel_file的数据类型', type(excel_file))  # <class 'pandas.core.frame.DataFrame'>
print('打印excel_file:\n', excel_file)

运行结果:
在这里插入图片描述
可以发现:1、虽然Excel表格中的内容有10行,但是读取的表格中有效行仅有9行(实验结果中显示索引为0~8),这是因为会将第一行的数据当成列名称显示,因此表格内容少算了一行;2、同时还可以发现,原始Excel表格中的“A”列对应为索引0,原始Excel表格中的“B”列对应为索引1,原始Excel表格中的“C”列对应为索引2,……,原始Excel表格中的“J”列对应为索引9,如下:
在这里插入图片描述
接下来,获取“J”列内容,这里使用了DataFrame的iloc函数,如下:

# 从表单中,获取指定列(这里是‘J’列)的所有单元格内容
num = alphabet2number(column_char)  # 获取大写字母的序号,如'A'就是1,'C'就是3    
column_data = excel_file.iloc[:, num - 1]  # column_data中存放了指定列的所有单元格内容
print('打印column_data的数据类型(里面存放了所有的列单元格数据):', type(column_data))  # <class 'pandas.core.series.Series'>
print('打印column_data中的所有单元格数据:\n', column_data)
print('打印column_data中的单元格个数:', len(column_data))  # 注意,仅有9个,而不是10个!!!

这样,就在column_data中存放了指定列的所有单元格内容!!!,运行结果:
在这里插入图片描述
接下来,遍历该列的所有单元格内容,有如下两种方式:

  • 方式一:直接遍历
# 方式一:直接遍历 该列中的所有单元格内容
for cell_data in column_data:print(cell_data)print('打印column_data中的单元格cell_data数据类型:', type(cell_data))

运行结果:
在这里插入图片描述

  • 方式二:索引遍历
# 方式二:索引遍历 该列中的所有单元格内容
for index in range(0, len(column_data), 1):print(column_data[index])print('打印column_data中的单元格数据类型:', type(column_data[index]))

运行结果:
在这里插入图片描述
接下来,测试一下,打印column_data的第一个单元格内容及其数据类型:

print(type(column_data[0]))
print(column_data[0])

运行结果:
在这里插入图片描述
接下来,从上面的column_data中获取指定列(这里是“J”列)的第3行至第8行单元格内容:

# 获取Excel文件中指定列的第3行至第8行的数据内容
start_row = 3
end_row = 8
start_row_truth = start_row - 2 # 为什么要减去2,因为Excel表格中的第一行是列名称,且行也是从索引0开始的!
end_row_truth = end_row - 2
for row in range(start_row_truth, end_row_truth + 1, 1):print('打印Excel中指定列的第', row + 2, '行的内容:', column_data[row])

运行结果:
在这里插入图片描述
与如下的预期相符:
在这里插入图片描述

三、完整代码

import os
import pandas as pd
import openpyxl########### todo: 将大写英文字母char转换成对应的数字,如'A'转换成1,'C'转换成3
def alphabet2number(char):result = ord(char) - ord('A') + 1 # ord('A')将字母“A”转换成ascii 65return result# test
if __name__ == '__main__':excel_file_path = './other_files/test_excel.xlsx'excel_sheet_name = 'Sheet2'column_char = 'J'# todo:从Excel文件中,读取指定的表单sheetexcel_file = pd.read_excel(excel_file_path, excel_sheet_name)print('打印excel_file的数据类型', type(excel_file))  # <class 'pandas.core.frame.DataFrame'>print('打印excel_file:\n', excel_file)print('\n\n')# todo: 获取Excel中指定列的内容,如'J'列内容# 从表单中,获取指定列(这里是‘J’列)的所有单元格内容num = alphabet2number(column_char)  # 获取大写字母的序号,如'A'就是1,'C'就是3column_data = excel_file.iloc[:, num - 1]  # column_data中存放了指定列的所有单元格内容print('打印column_data的数据类型(里面存放了所有的列单元格数据):', type(column_data))  # <class 'pandas.core.series.Series'>print('打印column_data中的所有单元格数据:\n', column_data)print('打印column_data中的单元格个数:', len(column_data))  # 注意,仅有9个,而不是10个!!!print('\n\n')# 方式一:直接遍历 该列中的所有单元格内容for cell_data in column_data:print(cell_data)print('打印column_data中的单元格cell_data数据类型:', type(cell_data))print('\n\n')# 方式二:索引遍历 该列中的所有单元格内容for index in range(0, len(column_data), 1):print(column_data[index])print('打印column_data中的单元格数据类型:', type(column_data[index]))print('\n\n')print(type(column_data[0]))print(column_data[0])print('\n\n')# 获取Excel文件中指定列的第3行至第8行的数据内容start_row = 3end_row = 8start_row_truth = start_row - 2 # 为什么要减去2,因为Excel表格中的第一行是列名称,且行也是从索引0开始的!end_row_truth = end_row - 2for row in range(start_row_truth, end_row_truth + 1, 1):print('打印Excel中指定列的第', row + 2, '行的内容:', column_data[row])

完整运行结果:

打印excel_file的数据类型 <class 'pandas.core.frame.DataFrame'>
打印excel_file:Unnamed: 0  Unnamed: 1  Unnamed: 2  ...  Unnamed: 7  Unnamed: 8  Name
0         NaN         NaN         NaN  ...         NaN         NaN    张三
1         NaN         NaN         NaN  ...         NaN         NaN    李四
2         NaN         NaN         NaN  ...         NaN         NaN    王五
3         NaN         NaN         NaN  ...         NaN         NaN   NaN
4         NaN         NaN         NaN  ...         NaN         NaN    小华
5         NaN         NaN         NaN  ...         NaN         NaN    小刚
6         NaN         NaN         NaN  ...         NaN         NaN   NaN
7         NaN         NaN         NaN  ...         NaN         NaN   NaN
8         NaN         NaN         NaN  ...         NaN         NaN    小东[9 rows x 10 columns]打印column_data的数据类型(里面存放了所有的列单元格数据): <class 'pandas.core.series.Series'>
打印column_data中的所有单元格数据:0     张三
1     李四
2     王五
3    NaN
4     小华
5     小刚
6    NaN
7    NaN
8     小东
Name: Name, dtype: object
打印column_data中的单元格个数: 9张三
打印column_data中的单元格cell_data数据类型: <class 'str'>
李四
打印column_data中的单元格cell_data数据类型: <class 'str'>
王五
打印column_data中的单元格cell_data数据类型: <class 'str'>
nan
打印column_data中的单元格cell_data数据类型: <class 'float'>
小华
打印column_data中的单元格cell_data数据类型: <class 'str'>
小刚
打印column_data中的单元格cell_data数据类型: <class 'str'>
nan
打印column_data中的单元格cell_data数据类型: <class 'float'>
nan
打印column_data中的单元格cell_data数据类型: <class 'float'>
小东
打印column_data中的单元格cell_data数据类型: <class 'str'>张三
打印column_data中的单元格数据类型: <class 'str'>
李四
打印column_data中的单元格数据类型: <class 'str'>
王五
打印column_data中的单元格数据类型: <class 'str'>
nan
打印column_data中的单元格数据类型: <class 'float'>
小华
打印column_data中的单元格数据类型: <class 'str'>
小刚
打印column_data中的单元格数据类型: <class 'str'>
nan
打印column_data中的单元格数据类型: <class 'float'>
nan
打印column_data中的单元格数据类型: <class 'float'>
小东
打印column_data中的单元格数据类型: <class 'str'><class 'str'>
张三打印Excel中指定列的第 3 行的内容: 李四
打印Excel中指定列的第 4 行的内容: 王五
打印Excel中指定列的第 5 行的内容: nan
打印Excel中指定列的第 6 行的内容: 小华
打印Excel中指定列的第 7 行的内容: 小刚
打印Excel中指定列的第 8 行的内容: nan
http://www.dtcms.com/a/390341.html

相关文章:

  • 【DMA】DMA入门:理解DMA与CPU的并行
  • Redis数据库(一)—— 初步理解Redis:从基础配置到持久化机制
  • Salesforce中的事件驱动架构:构建灵活可扩展的企业应用
  • OpenCV实现消除功能
  • Qt QValueAxis详解
  • deepseek大模型部署
  • 消息队列与定时器:如何优雅地处理耗时任务?
  • Maya绑定基础知识总结合集:父子关系和父子约束对比、目标约束示例
  • STM32开发(中断模式:外部中断)
  • (圆方树)洛谷 P4630 APIO2018 铁人两项 题解
  • windows10 使用moon-pilot并配置模型
  • Linux笔记---epoll用法及原理:从内核探究文件等待队列的本质-回调机制
  • Python快速入门专业版(三十三):函数参数陷阱:默认参数的“可变对象”问题(避坑指南)
  • Spring Security 框架 实践小项目(实现不同用户登录显示不同菜单以及每个菜单不同权限)
  • 开发避坑指南(49):Java Stream 对List中的字符串字段求和
  • 网络编程day02-组播,广播
  • 前端左侧菜单列表怎么写
  • LLM大模型和文心一言、豆包、deepseek对比
  • stm32h743iit6 配置 FMC 的时钟源
  • 中小企业数字化转型:从工具升级到思维转变
  • 数据传输中的三大难题,ETL 平台是如何解决的?
  • DAY16 字节流、字符流、IO资源的处理、Properties、ResourceBundle
  • 电气工程师面试题及答案
  • Halcon一维码与二维码识别技术解析
  • 【数据库系统Trip 第1站】总概
  • 关于 Python 编程语言常见问题及技术要点的说明
  • Mysql常用函数积累
  • AntV可视化(MCP 1.8)避坑指南
  • 学习日报|线程池 OOM
  • C# Progress