使用Python读取和写入excel的xlsx、xls文件
目录
读取xlsx文件
安装三方库
命令如下:
bash
pip install openpyxl
安装过程:
引入三方库
把使用需要的库引入进来
示例如下:
python
from openpyxl.reader.excel import load_workbook
import os
读取数据
打开文件
加载文件路径,打开文件并获取所有表头。
python
file = load_workbook(filename=path)
sheets = file.get_sheet_names()
表名
打印该表的表名称。
示例如下:
python
sheet1 = file.get_sheet_by_name(sheets[0])
print(sheet1.title)
最大行数
打印该表的最大行数。
示例如下:
python
sheet1 = file.get_sheet_by_name(sheets[0])
print(sheet1.max_row)
最大列数
打印该表的最大列数。
示例如下:
python
sheet1 = file.get_sheet_by_name(sheets[0])
print(sheet1.max_column)
读取一张表
读取excel文件中第一张表的所有数据,使用循环取得数据,添加到列表中后返回并打印。
示例如下:
python
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).value
lineList.append(value)
print(lineList)
# 读一张表数据
path = os.path.join(os.getcwd(), './test.xlsx')
read_xls(path)
读取整个文件
读取excel xlsx整个文件所有表内容。
示例如下:
python
from openpyxl.reader.excel import load_workbook
import os
def 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).value
lineList.append(value)
sheetInfo.append(lineList)
# 存入字典
dic[sheetName] = sheetInfo
return dic
path = os.path.join(os.getcwd(), './test.xlsx')
print(read_xls(path))
效果为:
注意:不能处理xls文件。警告并不影响使用。
返回xls整体内容
安装三方包
因为需要操作xls后缀文件,需要安装一下三方包。
命令如下:
bash
pip install pyexcel
pip install pyexcel-xls
pip install pyexcel-xlsx
如果使用有问题,再安装以下这几个库:
bash
pip install xlrd
pip install future
pip install xlwt-future
读取内容
示例如下:
python
from collections import OrderedDict
from pyexcel_xls import get_data
import os
def read_xls_xlsx(path):
dic = OrderedDict()
getData = get_data(path)
for sheet in getData:
dic[sheet] = getData[sheet]
return dic
path = os.path.join(os.getcwd(), 'test2.xls')
print(read_xls_xlsx(path))
执行效果:
bash
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文件中。
引入三方库
示例如下:
python
from collections import OrderedDict
from pyexcel_xls import save_data
import os
创建文件并写入数据
编写好处理创建和组装数据处理函数,传入设定的路径和数据,调用函数。
示例如下:
python
def create_excel(path, data):
dic = OrderedDict()
for sheetName, sheetValue in data.items():
datas = {}
datas[sheetName] = sheetValue
dic.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)
报错及解决
报错
bash
ValueError: cannot use LOCALE flag with a str pattern
报错全部内容截图如下:
解决
修改python安装目录下Lib中的sre_parse.py。
注释901行中代码
修改如下:
执行结果:
总结
本篇主要为使用Python 操作excel文件读取和写入安装类库和使用示例。