python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式。

用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”的内容如下,用于测试读写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)

接下来我们来进行写入,写入可以进行的操作太多了,我这里只列举了常用的的操作。

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()  # CreateAlignment

# 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()  # CreateStyle

style.alignment = alignment  # AddAlignmenttoStyle

worksheet.write(2, 0, '居中', style)

# 写入带颜色背景的数据

pattern = xlwt.Pattern()  # Createthe Pattern

# May be: NO_PATTERN, SOLID_PATTERN, or0x00 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()  # Createthe Pattern

style.pattern = pattern  # AddPatterntoStyle

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 foriteminlist(worksheet.rows)[2]]

print('第3行值',row3)

col3=[item.value foriteminlist(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 pandasaspd

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:指定要冻结的最底部的行和最右边的列

frompandas import DataFrame

data = {'name': ['张三','李四','王五'],'age': [11, 12, 13],'sex': ['男','女','男']}

df = DataFrame(data)

df.to_excel('file.xlsx')

【编辑推荐】

【责任编辑:姜华 TEL:(010)68476606】

点赞 0

python写入excel文件保存在哪里_万字长文记录Python读写EXCEL文件常用方法大全相关推荐

  1. excel表格末尾添加一行_教你使用Python批量读写excel文件

    当面对成百上千个excel文件,需要重复读写时,你会不会很头大呢? 与其花费好几天去做这些繁琐无意义的操作,不如学学python如何批量读写excel文件,几分钟就能搞定一整天的活! 使用xlrd库读 ...

  2. python写入文本文件的数据类型必须是_三:python数据类型和文件操作

    8.必须要知道.会的字符串方法 import string #print(string.ascii_letters+string.digits)#大小写字母+数字 #print(name.find(' ...

  3. python中返回上一步操作_通过实例解析Python文件操作实现步骤

    当程序运行时,变量是保存数据的好方法,但变量.序列以及对象中存储的数据是暂时的,程序结束后就会丢失,如果希望程序结束后数据仍然保持,就需要将数据保存到文件中. Python 提供了内置的文件对象,以及 ...

  4. python删除文件夹无法访问_人生苦短 我学Python——anaconda和Jupyter notebook安装使用...

    一.人生苦短 我学Python 为什么学习Python? 1.应用范围广 很多网站是用Python开发的,比如豆瓣,还有YouTube等等. 2.效率高,和其他编程语言对比,可以用少得多的代码写出相同 ...

  5. excel文件导入hive乱码_把数据库数据导出到excel

    SQL Server BI Step by Step 2--- 使用SSIS进行简单的数据导入导出 让我们首先开始学习SSIS吧,利用SSIS把SQL Server中的数据导出.首先,打开Vs.net ...

  6. python使用复合语句def创建函数对象_【收藏】Python实用技巧-成为Pythoner必经之路...

    前言 本文主要记录 Python 中一些常用技巧,所描述的是告诉你怎么写才是更好?  如果你并不熟悉Python语法,希望你能在下面代码片段中看到Python的简单.优雅; 如果你象我这样,对 Pyt ...

  7. java 读取excel 图片_利用Java+POI 读写Excel文档向Excel中插入图片

    一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97- ...

  8. excel 宏 数据透视表_宏从多个文件创建Excel数据透视表

    excel 宏 数据透视表 If you want to create a pivot table from data on different worksheets, you can use a M ...

  9. 黑马传智python基础班课程_fb238 17年_传智黑马Python

    fb238 17年_传智黑马Python 文件大小:7.39GB  文件类型:MP4 文件数量:50 --/资源热下载站/Vip教程/编程开发/Python/Fb238 17年_传智黑马Python/ ...

最新文章

  1. 编写程序,输入各类型变量按相应格式输出
  2. hive使用derby的服务模式(可以远程模式)
  3. 如何使用ping命令检查网络故障
  4. Duilib教程-控件练习
  5. python类成员变量_Python 类变量和成员变量
  6. c++ opencv 识别车牌_小强学Python+OpenCV之-1.0开篇
  7. 学习web前端还是UI?先了解Web前端和UI的区别是什么?在选择
  8. Web图形开发方案选型,SVG/VML/Flash/Applet优劣比较
  9. H5 调用摄像头进行拍照
  10. PMP笔记-项目管理过程中的审计类型
  11. face_recognition人脸识别
  12. electron 自定义标题栏_如何在Electron Framework中创建自定义标题栏(灵感来自Visual Studio Code标题栏)...
  13. springcloud中feign调用的权限认证
  14. 防控青光眼的3大武器
  15. java给微信发送get和post请求
  16. 计算机视觉:图片的马赛克、毛玻璃效果和图片的融合
  17. 禁止查看网络计算机方法,电脑如何禁止程序联网的方法
  18. 你有花生我有酒,一本学道看一天(一)
  19. MATLAB复原动态模糊图像
  20. 草料二维码生成器怎么连接打通其他应用?

热门文章

  1. 计算机毕业设计 SSM+Vue生鲜供应平台 生鲜商城平台 生鲜超市平台Java Vue MySQL数据库 远程调试 代码讲解
  2. CCS+C6678LE开发记录08:以太网接口测试示例之代码研究
  3. 如何实现内网映射到公网?
  4. js element-ui el-tree 树结构过滤 筛选
  5. mmkv跨进程,Android开发经验的有效总结,系列篇
  6. 招聘 | 美团-算法工程师-社招
  7. android搜索网站,加速 Android的 五大开源网站 codekk.com
  8. 【时间管理】在腾讯文档Excel进行简易TODO list制作
  9. Velocity使用示例
  10. echarts3 清空上一次加载的series数据