0. 使用库
xlsx文件解析处理: openpyxl库
csv文件格式生成:csv
1. 导入openpyxl
模块
1 | import openpyxl #导入模块openpyxl |
openpyxl
是第三方模块,需要先安装
1 pip install openpyxl
2. 读取文件
1 | workbook = openpyxl.load_workbook('info.xlsx') #获取表格文件 |
3. 获取目标sheet
sheet:EXCEL
默认打开时一般有多个工作表:Sheet1
、Sheet2
、Sheet3
…,Sheet1
是其中的一个工作表。如果需要的话,可以在工作簿中新建多个工作表。
获取工作簿中所有工作表名称
1 | import openpyxl |
结果:
[‘info’, ‘Sheet1’, ‘Sheet2’] <class ‘list’> info
知道目标sheet名称
1 | import openpyxl |
结果:
电影名
注意:get_sheet_by_name()方法已经未使用了,继续使用会出现警告:DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).
案例:
1
2
3
4 import openpyxl
workbook = openpyxl.load_workbook('info.xlsx') #获取表格文件
workbook_sheet = workbook.get_sheet_by_name("info") #获取表单
print(workbook_sheet.cell(row=1,column=1).value) #输出表单第一行第一列的值
1
2
3
4
5
6 """
输出结果
e:\python\shuju\ceshi.py:3: DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).
workbook_sheet = workbook.get_sheet_by_name("info") #获取表单
电影名
"""
获取活跃sheet
1 | import openpyxl |
结果:
info
遇到的问题
1、处理数据时,正常存储显示的中文在写入到csv文件时变成了乱码,文件的编码未能正确处理中文,需要在写入csv文件时指定编码。
2、写入多出一行空白行
1 | with open(filename, 'a', newline='', encoding='utf-8-sig') as f: |
完整代码
1 | def xlsx_to_csv(filename1, filename2): |
个人博客:lingyier自学笔记 本文链接:python程序01:excel文件转csv