Python 读取写入excel文件

使用Python读取和写入excel的xlsx、xls文件

目录

读取xlsx文件

安装三方库

引入三方库

读取数据

打开文件

表名

最大行数

最大列数

读取一张表

读取整个文件

返回xls整体内容

安装三方包

读取内容

写入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文件读取和写入安装类库和使用示例。

相关推荐
Lost of 程序猿3 小时前
ASP.NET Core SignalR 实战:从实时推送到底层协议与高可用部署
后端·asp.net
GlueNa2SiO33 小时前
04-Flask数据库操作SQLAlchemy
笔记·python·flask
JasmineWr3 小时前
Spring BeanDefinition 与 Bean 生命周期、循环依赖解析
java·后端·spring
Data_Journal3 小时前
Playwright vs Selenium:哪个是最佳无头浏览器
开发语言·python·scrapy·microsoft·编辑器
QQ_21696290963 小时前
【项目编号:project86564】SpringBoot供应链管理系统:采购、供应商、库存、销售、统计报表一体化实战
java·spring boot·后端
跨境技工小黎3 小时前
LLM蜜罐系统是什么?AI爬虫如何精准绕过?
开发语言·人工智能·python
lskblog3 小时前
Ubuntu 18.04 安装 LibreOffice(用于 Word 在线预览转换)
java·linux·python·ubuntu·word·php·laravel
王志来137944730083 小时前
多元场景催生工控服务器机箱差异化需求匀天以柔性适配回应行业挑战
运维·服务器·人工智能·python
灯澜忆梦4 小时前
【基于GO的Web开发10】gin获取HTML-Form表单提交参数
前端·后端·golang·html·gin
circuitsosk6 小时前
NL2SQL在工业级场景下的精度优化:Schema Linking + 动态Few-shot实战
人工智能·python·sql·大模型·nl2sql