您现在的位置是:亿华云 > 系统运维
万字长文记录Python读写EXCEL文件常用方法大全
亿华云2025-10-09 12:59:17【系统运维】7人已围观
简介python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式。用xlrd和xlwt进行excel读写; 用openpyxl进行excel读写;
python读写excel的字L文方式有很多,不同的长文模块在读写的讲法上稍有区别,这里我主要介绍几个常用的记录件常方式。
用xlrd和xlwt进行excel读写; 用openpyxl进行excel读写; 用pandas进行excel读写;参考:
https://www.python-excel.org/
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html#pandas.read_excel
https://www.jianshu.com/p/19219542bf23
2|0数据准备
为了方便演示,读写我这里新建了一个data.xls和data.xlsx文件,用方第一个工作表sheet1区域“A1:E5”的字L文内容如下,用于测试读写excel的长文代码:

3|0xlrd和xlwt
xlrd是一个库,用于从Excel文件中以.xls格式读取数据和格式化信息
xlwt是记录件常一个库,用于将数据和格式化信息写入较旧的读写Excel文件(例如:.xls)。
3|1示例
pip install xlrd pip install xlwt
我们开始来读取文件的用方内容
import xlrd import os file_path = os.path.dirname(os.path.abspath(__file__)) base_path = os.path.join(file_path, data.xlsx) book = xlrd.open_workbook(base_path) sheet1 = book.sheets()[0] nrows = sheet1.nrows print(表格总行数, nrows) ncols = sheet1.ncols print(表格总列数, ncols) row3_values = sheet1.row_values(2) print(第3行值, row3_values) col3_values = sheet1.col_values(2) print(第3列值, col3_values) cell_3_3 = sheet1.cell(2, 2).value print(第3行第3列的单元格的值:, cell_3_3)
接下来我们来进行写入,写入可以进行的字L文操作太多了,我这里只列举了常用的长文的操作。
import xlwt import datetime # 创建一个workbook 设置编码 workbook = xlwt.Workbook(encoding=utf-8) # 创建一个worksheet worksheet = workbook.add_sheet(Worksheet) # 写入excel参数对应 行,记录件常 列, 值 worksheet.write(0, 0, label=测试) # 设置单元格宽度 worksheet.col(0).width = 3333 # 设置单元格高度 tall_style = xlwt.easyxf(font:height 520;) worksheet.row(0).set_style(tall_style) # 设置对齐方式 alignment = xlwt.Alignment() # Create Alignment # May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED alignment.horz = xlwt.Alignment.HORZ_CENTER # May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED alignment.vert = xlwt.Alignment.VERT_CENTER style = xlwt.XFStyle() # Create Style style.alignment = alignment # Add Alignment to Style worksheet.write(2, 0, 居中, style) # 写入带颜色背景的数据 pattern = xlwt.Pattern() # Create the Pattern # May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12 pattern.pattern = xlwt.Pattern.SOLID_PATTERN pattern.pattern_fore_colour = 5 # May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on... style = xlwt.XFStyle() # Create the Pattern style.pattern = pattern # Add Pattern to Style worksheet.write(0, 1, 颜色, style) # 写入日期 style = xlwt.XFStyle() # Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0 style.num_format_str = M/D/YY worksheet.write(0, 2, datetime.datetime.now(), style) # 写入公式 worksheet.write(0, 3, 5) # Outputs 5 worksheet.write(0, 4, 2) # Outputs 2 # Should output "10" (A1[5] * A2[2]) worksheet.write(1, 3, xlwt.Formula(D1*E1)) # Should output "7" (A1[5] + A2[2]) worksheet.write(1, 4, xlwt.Formula(SUM(D1,E1))) # 写入超链接 worksheet.write(1, 0, xlwt.Formula(HYPERLINK("http://www.baidu.com";"百度一下"))) # 保存 workbook.save(Excel_test.xls)需要注意的是最好在当前路径下通过命令行执行,否则无法生成文件。读写


4|0openpyxl
openpyxl是香港云服务器用方一个Python库,用于读取/写入Excel 2010 xlsx/xlsm/xltx/xltm文件。
安装包
pip install openpyx安装完成可以开始进行读取数据
import openpyxl import os file_path = os.path.dirname(os.path.abspath(__file__)) base_path = os.path.join(file_path, data.xlsx) workbook = openpyxl.load_workbook(base_path) worksheet = workbook.get_sheet_by_name(Sheet1) row3=[item.value for item in list(worksheet.rows)[2]] print(第3行值,row3) col3=[item.value for item in list(worksheet.columns)[2]] print(第3行值,col3) cell_2_3=worksheet.cell(row=2,column=3).value print(第2行第3列值,cell_2_3) max_row=worksheet.max_row print(最大行,max_row)
现在我们来开始写入数据
import zipfile # 创建文件句柄 file = zipfile.ZipFile("测试.zip", r) # 提取压缩文件中的内容,注意密码必须是bytes格式,path表示提取到哪 file.extractall(path=., pwd=123.encode(utf-8))

5|0pandas
pandas支持xls, xlsx, xlsm, xlsb, odf, ods和odt文件扩展名从本地文件系统或URL读取。支持读取单个工作表或工作表列表的选项。
首先依然是安装包
pip install pandas语法:
pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None, squeeze=False,dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, parse_dates=False, date_parser=None, thousands=None, comment=None, skipfooter=0, convert_float=True, **kwds) io,Excel的存储路径 sheet_name,要读取的工作表名称 header, 用哪一行作列名 names, 自定义最终的列名 index_col, 用作索引的列 usecols,需要读取哪些列 squeeze,当数据仅包含一列 converters ,强制规定列数据类型 skiprows,跳过特定行 nrows ,需要读取的行数 skipfooter , 跳过末尾n行 import pandas as pd import os file_path = os.path.dirname(os.path.abspath(__file__)) base_path = os.path.join(file_path, data.xlsx) df = pd.read_excel(base_path) print(df)
写入数据
语法:
DataFrame.to_excel(excel_writer, sheet_name=Sheet1, na_rep=, float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep=inf, verbose=True, freeze_panes=None)参数说明:
excel_writer:文件路径或现有的ExcelWriter sheet_name:将包含数据文件的工作表的名称 na_rep:缺失的数据表示 float_format:格式化浮点数的字符串。高防服务器例如float_format = " %。2f"格式为0.1234到0.12。 columns:列 header:写出列名。如果给定一个字符串列表,则假定它是列名的别名。 index:写入行名称(索引) index_label:如果需要,索引列的列标签。如果未指定,并且标头和索引为真,则使用索引名。如果DataFrame使用多索引,应该给出一个序列。 startrow:左上角的单元格行转储数据帧。 startcol:左上角单元格列转储数据帧。 engine:编写要使用的引擎“ openpyxl”或“ xlsxwriter”。 您还可以通过选项io.excel.xlsx.writer,io.excel.xls.writer和io.excel.xlsm.writer进行设置。 merge_cells:将多索引和层次结构行写入合并单元格。 encoding:对生成的excel文件进行编码。仅对xlwt有必要,其他编写器本身支持unicode。 inf_rep:表示无穷大。 verbose:在错误日志中显示更多信息。 freeze_panes:指定要冻结的最底部的行和最右边的免费信息发布网列 from pandas import DataFrame data = { name: [张三, 李四, 王五],age: [11, 12, 13],sex: [男, 女, 男]} df = DataFrame(data) df.to_excel(file.xlsx)

很赞哦!(3361)
上一篇: ④注册门槛低
下一篇: 二、如何选择合适的域名
相关文章
- 只要我们做的是从目前的市场情况选择域名,从简单易记,从个性特征上,我们就可以找到一个好域名进行注册。域名注册进行域名记录和解析以及绑定网站后,客户可以通过URL登录您的网站。
- 程序员一个月做出来的东西和三个月做出来的东西有什么区别?
- 推荐一个小而美的Python代码格式化工具
- 某大佬的Python读书笔记:70个注意的小Notes对于初学者十分友好
- 为什么起域名意义非凡?起域名有什么名堂?
- 去年裁撤34岁以上员工,华为净利润不减反增,程序员坐不住了
- 如果只能选择一种编程语言,你会选择哪门编程语言?
- 移除注释的完善思路:真的可以用正则实现?
- 2、定期提交和投标域名注册。例如,益华网络点击“立即预订”后,平台会抢先为客户注册域名。当然,一个域名可能会被多个客户预订,所以出价最高的人中标。
- 使用VS Code进行Python编程
热门文章
站长推荐
公司在注册域名时还需要确保邮箱的安全性。如果邮箱不安全,它只会受到攻击。攻击者可以直接在邮箱中重置密码并攻击用户。因此,有必要注意邮箱的安全性。
算法太多挑花眼?教你如何选择正确的机器学习算法
用Python来看3天破10亿的《我不是药神》到底神在哪?
微软推出Visual Studio Kubernetes工具包预览版
域名资源有限,好域名更是有限,但机会随时都有,这取决于我们能否抓住机会。一般观点认为,国内域名注册太深,建议优先考虑外国注册人。外国注册人相对诚实,但价格差别很大,从几美元到几十美元不等。域名投资者应抓住机遇,尽早注册国外域名。
聊一聊契约测试
RPC是什么?为什么要学习RPC?
Service Mesh如此火热,背后的技术细节你了解多少?