1.Python Excel 读写追加写入(xlrd, xlwt, openpyxl, xlsxwriter)
首先几个第三方库进行比较:
| xlrd | xlwt | openpyxl | XlsxWriter | |
|---|---|---|---|---|
| 介绍 | 用来读取xls文件,是python-excel的三大模块 | 用来写xls文件,是python-excal的三大模块 | 可以读写XLSX、XLSM文件 | 可以创建XLSX文件 |
| 读 | √ | × | √ | × |
| 写 | × | √ | √ | √ |
| .xls | √ | √ | × | × |
| .xlsx | × | × | √ | √ |
| 大文件 | × | × | √ | √ |
注释:Excel 2003 即XLS文件有大小限制即65536行256列,所以不支持大文件,而Excel 2007以上即XLSX文件的限制则为1048576行16384列
1.1. xlwt
xlwt是一个python第三方库。作用是通过python对xls文件进行写入的操作。
在xlwt中主要讲excel表格抽象成如下几个类:
工作簿 xlwt.Workbook.Workbook
工作表 xlwt.Worksheet.Worksheet
单元格 xlwt.Column.Column
import xlwt
book = xlwt.Workbook() # 新建工作簿
table = book.add_sheet('Over',cell_overwrite_ok=True) # 如果对同一单元格重复操作会发生overwrite Exception,cell_overwrite_ok为可覆盖
sheet = book.add_sheet('Test') # 添加工作页
sheet.write(1,1,'A') # 行,列,属性值 (1,1)为B2元素,从0开始计数
style = xlwt.XFStyle() # 新建样式
font = xlwt.Font() #新建字体
font.name = 'Times New Roman'
font.bold = True
style.font = font # 将style的字体设置为font
table.write(0,0,'Test',style)
book.save(filename_or_stream='excel_test.xls') # 保存
更多, 可以参考官方文档。
1.2. xlrd
xlrd是一个python第三方库。作用是通过python对xls文件进行读取的操作。
import xlrd
data = xlrd.open_workbook('excel_test.xls')
print(data.sheet_names()) # 输出所有页的名称
table = data.sheets()[0] # 获取第一页
table = data.sheet_by_index(0) # 通过索引获得第一页
table = data.sheet_by_name('Over') # 通过名称来获取指定页
nrows = table.nrows # 为行数,整形
ncolumns = table.ncols # 为列数,整形
print(type(nrows))
print(table.row_values(0))# 输出第一行值 为一个列表
# 遍历输出所有行值
for row in range(nrows):
print(table.row_values(row))
# 输出某一个单元格值
print(table.cell(0,0).value)
print(table.row(0)[0].value)
更多可以查看官方文档
1.2.openpyxl
在openpyxl 中主要讲excel表格抽象成如下几个类:
工作簿 openpyxl.workbook,workbook.WorkBook
工作表 openpyxl.worksheet.worksheet.Worksheet
单元格 openpyxl.cell.cell.Cell
一个工作簿包含多个工作表,
一个工作表包含多个单元格。
这是openpyxl中主要类, 所以只要知道这几个类, 你就可以通过方法构造和调用他们。
1.2.1.openpyxl的基本使用
import openpyxl
def test():
"""
测试
"""
#创建工作簿
workbook = openpyxl.Workbook()
print(type(workbook))
#获取活跃的表格默认是第一个, 你也可以修改它的值
sheet0 = workbook.active
#创建工作表
sheet1 = work.create_sheet('sheet1')
print(type(sheet0))
#当然我们想往sheet0 表中写入数据我们也可以在创建一个新的表sheet1
sheet1 = workbook.create_sheet("sheet1")
cell = shee1.cell(1,1,'你好')
print(type(cell))
workbook.save('test.xlsx')
###1.2.2. openpyxl实现文件的写
import openpyxl
def write():
"""
写入xlsx文件
"""
#创建工作簿
workbook = openpyxl.Workbook()
#创建一个表
sheet1 = workbook.create_sheet('sheet1')
#向单元格内写入数据
for r in range(1,10):
for c in range(1,3):
sheet1.cell(r,c,'我是第({},{})个单元格'.format(r,c))
#保存
workbook.save('mywork1.xlsx')
1.2.3. openpyxl实现文件的读取
import openpyxl
def read():
"""
读取xlsx文件
"""
#加载mywork1.xlsx。 返回的是一个WorkBook对象
workbook = openpyxl.load_workbook('mywork1.xlsx')
#返回该工作簿中所有工作表的名, 返回值是一个列表
sheetnames = workbook.sheetnames
#我们通过名字获取每一表,并读取
for name in sheetnames:
sheet = workbook[name]
print("-"*30)
print("当前表{}".format(name))
#最大行数, 和列数
max_row = sheet.max_row
max_column = sheet.max_column
for r in range(1, max_row+1):
for c in range(1, max_column+1):
cell = sheet.cell(r,c)
print(cell.value)
现在你对openpyxl就会有了基本的了解,有这些知识足以让你去实现对xlsx进行读写操作。
当然你可以参考官方文档对openpyxl有一个更深入的了解。
1.2.4. 使用openpyxl对Excel内容追加
import openpyxl
data = openpyxl.load_workbook('excel_test.xlsx')
print(data.sheetnames) # 输出所有工作页名
# 取第一张表
sheetnames = data.sheetnames()# 返回一个列表, 包含了该工作簿中所有表的名字
table = data[sheetnames[0]]
print(table.title) # 输出表名
nrows = table.max_row # 获得行数
ncolumns = table.max_column # 获得行数
values = ['E','X','C','E','L']
for value in values:
table.cell(nrows+1,1).value = value
nrows = nrows + 1
data.save('excel_test.xlsx')
本文介绍了Python中用于Excel读写的xlrd, xlwt和openpyxl库,重点讲解了openpyxl的基本使用、文件读取和内容追加。xlwt用于写入xls文件,xlrd用于读取,而openpyxl不仅支持读写,还能实现对xlsx文件的内容追加。"
111998293,10493660,使用Scrapy爬取豆瓣影评与评分的实战教程,"['Python', '爬虫', '数据抓取', 'Scrapy框架', '数据分析']

427

被折叠的 条评论
为什么被折叠?



