python之处理excel表格
2024-09-05 03:49:51
xlrd
xlrd是python中一个第三方的用于读取excle表格的模块,很多企业在没有使用计算机管理前大多使用表格来管理数据,所以导入表格还是非常常用的!
安装xlrd
pip install xlrd
excel结构分析
一个excle表格包含多个sheet
一个sheet中包含多行多列
每个单元格具备唯一的行号和列号
常用函数
import xlrd # 读取文件
work_book = xlrd.open_workbook("/Users/jerry/Desktop/公司机密数据.xlsx")
# 选取一个表 # 获取所有所有表格名称
print(work_book.sheet_names()) # 选择第2个 索引从0开始
sheet = work_book.sheet_by_index(1) # 表格名称
print(sheet.name) # 行数
print(sheet.nrows)
# 列数
print(sheet.ncols) #批量读取行数据
# 取出第6行的全部内容包含数据类型
print(sheet.row(6))
# 取出第6行的内容包含数据类型 从第3列开始获取
print(sheet.row_slice(6,start_colx=3)) # 取出第6行的内容包含数据类型 从第3列开始获取
print(sheet.row_slice(6,start_colx=4,end_colx=5)) # 获取该行所有数据类型 一数字表示
# print(sheet.row_types(6))
# print(sheet.row_values(6)) # 单元格的处理
print(sheet.cell(0,0).value) # 取值
print(sheet.cell(0,0).ctype) # 取类型
print(sheet.cell_value(2,0)) # 直接取值 print(sheet.row(0)[0]) # 先取行再取单元格
print(sheet.col(0)) # 第0列所有数据
print(sheet.col(0)) # 先取列再取单元格 print(sheet.cell_type(0,0)) # 单元格位置转换
print(xlrd.cellname(2,1))
print(xlrd.cellnameabs(0,2))
print(xlrd.colname(5)) # 时间类型转换
# print(sheet.cell(6,5).value)
# print(xlrd.xldate_as_datetime(sheet.cell(6,5).value,1))
案例:
读取一个报价单 其第二个sheet包含合并单元格
文件地址:https://share.weiyun.com/5GaLY2m
import xlrd
sheet = xlrd.open_workbook("报价单.xlsx").sheet_by_index(1)
def get_text(row,col):
# 判断该坐标是否是被合并的单元格 合并单元格的数据都在合并区域的第一个位置
for ces in sheet.merged_cells:
if (row >= ces[0] and row < ces[1]) and (col >= ces[2] and col < ces[3]):
return sheet.cell(ces[0],ces[2]).value # 取出合并区域的第一个数据
return sheet.cell(row,col).value #正常取出对应数据 keys = sheet.row_values(1) # 获取所有的列标题
data = []
for row in range(2,sheet.nrows):
dic = {}
for col in range(sheet.ncols):
k = keys[col] #确定key
res = get_text(row,col)
dic[k] = res # 确定值 并存储
data.append(dic)
print(data)
# 序列化为json
import json
json.dump(data,open("test.json","wt"),ensure_ascii=False)
xlwt模块
是python中一个第三方的用于写入excle数据到表格的模块
用代码来编写exlce是非常低效的 所以该模块了解即可。
import xlwt
# 创建工作簿
work = xlwt.Workbook()
# 创建一个表
sheet = work.add_sheet("员工信息数据") #创建一个字体对象
font = xlwt.Font()
font.name = "Times New Roman" # 字体名称
font.bold = True # 加粗
font.italic = True # 斜体
font.underline = True # 下划线 #创建一个样式对象
style = xlwt.XFStyle()
style.font = font # 写入标题
for k in keys:
sheet.write(0,keys.index(k),k,style)
# 写入数据
for i in infos:
for k in keys:
sheet.write(1 + infos.index(i),keys.index(k),label = i[k])
# 保存至文件
work.save("test.xls") #important: xlwt写入excel,单元格对写入的字符有长度限制 string long than 32767
解决方案使用openpyxl模块替换(默认支持.xlsx格式)
面试题:
# 读取文件
work_book = xlrd.open_workbook("/xxx/xxx.xlsx")
# 选取一个表
sheet = work_book.sheet_by_index(0) # 遍历表格数据
datas = []
for row in range(1,sheet.nrows):
temp_list =[]
for col in range(sheet.ncols):
value = sheet.cell_value(row,col)
temp_list.append(value)
datas.append(temp_list) # 打开数据库连接
db = pymysql.connect(host='localhost', port=3306,
user='username', passwd='password', db='database_name', charset='utf8') # 使用cursor()方法获取操作游标
cursor = db.cursor() # SQL 插入语句
sql = "INSERT INTO SHOP(shop_code, shop_name, month) VALUES (%s,%s,%s)"
try:
# 执行sql语句
cursor.executemany(sql, datas)
# 提交到数据库执行
db.commit()
except :
# 如果发生错误则回滚
db.rollback()
# 关闭游标
cursor.close()
# 关闭数据库连接
db.close()
最新文章
- rhel7 单用户修改root密码
- Python之路----------基础 一(数据类型、变量、基本语法、流程控制)
- Android Environment FAQ (Frequently Asked Question)
- 录制游戏视频——fraps
- bootstrap -- 一个标签中,同时有 col-xs , col-sm , col-md , col-lg
- openvpn 连接无法上网
- (转)OpenGL中位图的操作(glReadPixels,glDrawPixels和glCopyPixels应用举例)
- 关闭 Mac 拼写自动纠正与横线转换
- Freeswitch配置之sofia
- 汇编语言--微机CPU的指令系统(五)(移位操作指令)
- docker拉取镜像报错:net/http: TLS handshake timeout.
- LOJ.6235.区间素数个数(Min_25筛)
- Python 多个分隔符 读取逗号和空格分开的数据
- 关于Java变量的可见性问题
- C++笔试易错题集(持续更新)
- Codeforces 463D Gargari and Permutations(求k个序列的LCS)
- linux下memcached安装 和redis安装,jdk,tomcat,mysql 安装
- Android动态设置字体颜色
- maven打包可以行文件,包含依赖包等
- linux集成开发环境