Python读写EXCEL⽂件常⽤⽅法⼤全
前⾔
python读写excel的⽅式有很多,不同的模块在读写的讲法上稍有区别,这⾥我主要介绍⼏个常⽤的⽅式。
⽤xlrd和xlwt进⾏excel读写;
⽤openpyxl进⾏excel读写;
⽤pandas进⾏excel读写;
参考:
数据准备
为了⽅便演⽰,我这⾥新建了⼀个data.xls和data.xlsx⽂件,第⼀个⼯作表sheet1区域“A1:E5”的内容如下,⽤于测试读写excel的代码:
xlrd和xlwt
xlrd是⼀个库,⽤于从Excel⽂件中以.xls格式读取数据和格式化信息
xlwt是⼀个库,⽤于将数据和格式化信息写⼊较旧的Excel⽂件(例如:.xls)。
⽰例
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 = wspython怎么读取excel文件数据
print('表格总⾏数', nrows)
ncols = ls
print('表格总列数', ncols)
row3_values = w_values(2)
print('第3⾏值', row3_values)
col3_values = l_values(2)
print('第3列值', col3_values)
cell_3_3 = ll(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='测试')
# 设置单元格宽度
# 设置单元格⾼度
tall_style = xlwt.easyxf('font:height 520;')
# 设置对齐⽅式
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 = 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, w(), 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("www.baidu";"百度⼀下")'))
# 保存
workbook.save('Excel_test.xls')
需要注意的是最好在当前路径下通过命令⾏执⾏,否则⽆法⽣成⽂件。
openpyxl
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 = _sheet_by_name('Sheet1')
row3=[item.value for item in ws)[2]]
print('第3⾏值',row3)
col3=[item.value for item in lumns)[2]]
print('第3⾏值',col3)
cell_2_ll(row=2,column=3).value
print('第2⾏第3列值',cell_2_3)
max_row=worksheet.max_row
print('最⼤⾏',max_row)
现在我们来开始写⼊数据
import openpyxl
import datetime
from openpyxl.styles import Font, colors, Alignment
#实例化
workbook = openpyxl.Workbook()
# 激活 worksheet
sheet=workbook.active
#写⼊数据
sheet['A1']='python'
sheet['B1']='javascript'
#写⼊时间
sheet['A2'] = w().strftime("%Y-%m-%d")
# 第2⾏⾏⾼
# B列列宽
# 设置A1中的数据垂直居中和⽔平居中
sheet['A1'].alignment = Alignment(horizontal='center', vertical='center')
# 下⾯的代码指定了等线24号,加粗斜体,字体颜⾊黄⾊。直接使⽤cell的font属性,将Font对象赋值给它。
bold_itatic_24_font = Font(name='等线', size=24, italic=True, color='00FFBB00', bold=True)
sheet['B1'].font = bold_itatic_24_font
# 合并单元格,往左上⾓写⼊数据即可
<_cells('A2:B2') # 合并⼀⾏中的⼏个单元格
# 拆分单元格
# sheet.unmerge_cells('A2:B2')
#保存
workbook.save('new.xlsx')
pandas
pandas⽀持xls, xlsx, xlsm, xlsb, odf, ods和odt⽂件扩展名从本地⽂件系统或URL读取。⽀持读取单个⼯作表或⼯作表列表的选项。
⾸先依然是安装包
pip install pandas
语法:
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)
写⼊数据
语法:
<_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)
<_excel('file.xlsx')

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。