使用Python读取和写入excel的xlsx、xls文件
目录
读取xlsx文件
安装三方库
引入三方库
读取数据
打开文件
表名
最大行数
最大列数
读取一张表
读取整个文件
返回xls整体内容
安装三方包
读取内容
写入xls文件
引入三方库
创建文件并写入数据
报错及解决
报错
解决
总结
读取xlsx文件
安装三方库
命令如下:
pip install openpyxl
安装过程:
引入三方库
把使用需要的库引入进来
示例如下:
from openpyxl.reader.excel import load_workbook
import os
读取数据
打开文件
加载文件路径,打开文件并获取所有表头。
file = load_workbook(filename=path)
sheets = file.get_sheet_names()
表名
打印该表的表名称。
示例如下:
sheet1 = file.get_sheet_by_name(sheets[0])
print(sheet1.title)
最大行数
打印该表的最大行数。
示例如下:
sheet1 = file.get_sheet_by_name(sheets[0])
print(sheet1.max_row)
最大列数
打印该表的最大列数。
示例如下:
sheet1 = file.get_sheet_by_name(sheets[0])
print(sheet1.max_column)
读取一张表
读取excel文件中第一张表的所有数据,使用循环取得数据,添加到列表中后返回并打印。
示例如下:
def read_xls(path):file = load_workbook(filename=path)sheets = file.get_sheet_names()sheet1 = file.get_sheet_by_name(sheets[0])for lineNum in range(1, sheet1.max_row + 1):lineList = []for columnNum in range(1, sheet1.max_column + 1):# 拿数据value = sheet1.cell(row=lineNum, column=columnNum).valuelineList.append(value)print(lineList)
# 读一张表数据
path = os.path.join(os.getcwd(), './test.xlsx')
read_xls(path)
读取整个文件
读取excel xlsx整个文件所有表内容。
示例如下:
from openpyxl.reader.excel import load_workbook
import osdef read_xls(path):dic = {}file = load_workbook(filename=path)sheets = file.get_sheet_names()for sheetName in sheets:sheet = file.get_sheet_by_name(sheetName)# 存储一张表所有数据sheetInfo = []for lineNum in range(1, sheet.max_row + 1):lineList = []for columnNum in range(1, sheet.max_column + 1):value = sheet.cell(row=lineNum, column=columnNum).valuelineList.append(value)sheetInfo.append(lineList)# 存入字典dic[sheetName] = sheetInforeturn dicpath = os.path.join(os.getcwd(), './test.xlsx')
print(read_xls(path))
效果为:
注意:不能处理xls文件。警告并不影响使用。
返回xls整体内容
安装三方包
因为需要操作xls后缀文件,需要安装一下三方包。
命令如下:
pip install pyexcel
pip install pyexcel-xls
pip install pyexcel-xlsx
如果使用有问题,再安装以下这几个库:
pip install xlrd
pip install future
pip install xlwt-future
读取内容
示例如下:
from collections import OrderedDict
from pyexcel_xls import get_data
import osdef read_xls_xlsx(path):dic = OrderedDict()getData = get_data(path)for sheet in getData:dic[sheet] = getData[sheet]return dicpath = os.path.join(os.getcwd(), 'test2.xls')
print(read_xls_xlsx(path))
执行效果:
E:\lianxipy\venv\Scripts\python.exe E:\lianxipy\python基础\读取excel\返回xls和xlsx整体内容.py
OrderedDict([('Sheet1', [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16]]), ('Sheet2', [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21]]), ('Sheet3', [])])
注意:无法读取xlsx后缀文件。
写入xls文件
创建excel文件,并把数据写入到xls文件中。
引入三方库
示例如下:
from collections import OrderedDict
from pyexcel_xls import save_data
import os
创建文件并写入数据
编写好处理创建和组装数据处理函数,传入设定的路径和数据,调用函数。
示例如下:
def create_excel(path, data):dic = OrderedDict()for sheetName, sheetValue in data.items():datas = {}datas[sheetName] = sheetValuedic.update(datas)save_data(path, dic)path = os.path.join(os.getcwd(), 'write1.xls')
data = {'表1': [[1, 2, 3], [4, 5, 6]], '表2': [[11, 22], [33, 44]]}
create_excel(path, data)
报错及解决
报错
ValueError: cannot use LOCALE flag with a str pattern
报错全部内容截图如下:
解决
修改python安装目录下Lib中的sre_parse.py。
注释901行中代码
修改如下:
执行结果:
总结
本篇主要为使用Python 操作excel文件读取和写入安装类库和使用示例。