python 读写excel文件(pandas/xlrd/xlwt/openpyxl)
1、读取 excel 文件
(1)read_excel
import pandas as pd
data = pd.read_excel(r'D:\学习\python\file\excel\data.xlsx')
(2)xlrd
import xlrd
workbook = xlrd.open_workbook(r'D:\学习\python\file\excel\data.xlsx') # 打开excel文件
sheet = workbook.sheets()[0] # 打开sheet(第一个sheet)
data = df()
for i in range (1,sheet.nrows):
rowvalues = sheet.row_values(i)
data = data.append([rowvalues], ignore_index = True)
data.columns = sheet.row_values(0)
(3)openpyxl
import openpyxl
from openpyxl import load_workbook
workbook = load_workbook(r'D:\学习\python\file\excel\data.xlsx')
sheet = workbook[workbook.sheetnames[0]]
data = df()
for row in sheet.rows:
rowvalues = [cell.value for cell in row]
data = data.append([rowvalues], ignore_index = True)
data.columns =[cell.value for cell in list(sheet.rows)[0]]
data.drop(0,inplace = True)
注:
(1)read_excel:读取excel文件
args:
io: 路径
sheet_name:读取的 sheet 名,默认0(‘Sheet1’),也可设置为提取的表名称
header:指定行作为列名,默认0(第一行),也可设置header = [3]:将第三行设置为字段名
index_col:指定列为索引列
names: 指定列的名字, names = [“a”,“b”,“c”]
(2)xlrd:读取,支持 xlsx
获取所有的sheet名字:
workbook.sheet_names()
获取第一个sheet:
sheet = workbook.sheet_names()[0]
sheet = workbook.sheet_by_index(1)
sheet = workbook.sheet_by_name(‘Sheet1’)
获取sheet的名字、行数、列数
sheet.name、sheet.nrows、sheet.ncols
获取第一行内容
rows = sheet.row_values(0)
获取第一列内容
cols = sheet.col_values(0)
获取单元格内容(第2行,第2列数据)
sheet.cell(1,1).value.encode(‘utf-8’)
sheet.cell_value(1,1).encode(‘utf-8’)
sheet.row(1)[1].value.encode(‘utf-8’)
获取单元格内容的数据类型
sheet.cell(1,3).ctype
0: empty, 1 string, 2 number, 3 date, 4 boolean, 5 error
读取日期数据
import xlrd
from xlrd import xldate_as_tuple
import datetime as dt
sheet.cell(1,0).ctype
date_value = xlrd.xldate_as_tuple(sheet.cell_value(1,2), 0) # ①是数据,②有两种取值,0是以1900-01-01为基准的日期,1是以1904-01-01为基准的日期
dt.date(*date_value[:3])
dt.date(*date_value[:3]).strftime(’%Y/%m/%d’)
(3)openpyxl:读写,仅支持 xlsx 格式,不需要安装 excel 软件
获取所有的sheet名字:
workbook.sheetnames
获取第一个sheet:
sheet = workbook[‘Sheet1’]
sheet = workbook.get_sheet_by_name(‘Sheet1’)
sheet = workbook[workbook.sheetnames[0]]
获取sheet的名字、行数、列数
sheet.title、sheet.max_row、sheet.max_column
获取第一行内容
rows = [cell.value for cell in list(sheet.rows)[0]]
获取第一列内容
cols = [cell.value for cell in list(sheet.columns)[0]]
获取单元格内容(第2行,第2列数据)
sheet.cell(2,2).value
sheet[‘B2’].value
(4)xlwings:支持 xls、xlsx 格式,需要安装有 excel 软件,依赖于 pywin32
2、写入 excel 文件
(1)to_excel
data.to_excel(r'D:\学习\python\file\excel\data_toexcel.xlsx')
(2)xlwt
import xlwt
writeBook = xlwt.Workbook(encoding='utf-8')
sheet = writeBook.add_sheet("mysheet", cell_overwrite_ok = True)
for m in range(0, data.shape[0]):
for n in range(data.shape[1]):
sheet.write(m, n, data.iloc[m,n])
writeBook.save(r'D:\学习\python\file\excel\data_xlwt.xls')
(3)openpyxl
writeBook = openpyxl.Workbook()
sheet = writeBook.active
for i in range(len(data)):
sheet.append(list(data.iloc[i,:]))
writeBook.save(r'D:\学习\python\file\excel\data_openpyxl.xlsx')
注:
(1)to_excel:
args:
sheet_name:写入的 sheet 名,默认0(‘Sheet1’)
na_rep: 缺失值填充,可以设置为数值、字符串,na_rep = 1,na_rep = ‘null’
header:指定行作为列名,默认0(第一行)
index:是否显示index,默认True(显示index)
index_label:指定列为索引列
float_format: 默认为None,float_format=’%.2f’ : 保留两位小数
(2)xlwt:写入支持 xls,只能创建一个新的 excel 文件,然后将内容写入这个文件