Python学习笔记(7):操作Excel

简述

Python对Excel操作的方法主要有openpyxl、xlsxwriter、xlrd、xlwt、xlutils这几种,下面我们逐个进行介绍。

openpyxl

openpyxl包提供了读写Excel2010版本(即后缀为.xlsx)的方法。

写操作

openpyxl包提供了多种写入操作的方法。

from openpyxl import Workbook
from openpyxl.compat import range
from openpyxl.utils import get_column_letter

wb = Workbook()

dest_filename = 'empty_book.xlsx'

ws1 = wb.active
ws1.title = "range names"

for row in range(1, 40):
    ws1.append(range(600))

ws2 = wb.create_sheet(title="Pi")

ws2['F5'] = 3.14

ws3 = wb.create_sheet(title="Data")
for row in range(10, 20):
    for col in range(27, 54):
        _ = ws3.cell(column=col, row=row, value="{0}".format(get_column_letter(col)))
print(ws3['AA10'].value)

wb.save(filename = dest_filename)

上面这段代码实现了三种写操作,第一种是对整行操作,第二种和第三种是对单个单元格写入数据,不同的是第二种可以直接通过单元格名称定位单位格,第三种则需要通过行列号来定位。

读操作

同样通过一段代码来了解读操作。

from openpyxl import load_workbook

wb = load_workbook(filename='empty_book.xlsx')
sheet_ranges = wb['range names']
print sheet_ranges['D18'].value

openpyxl提供的读操作非常简单:

  • 第一步:获取指定Excel文件的workbook。
  • 第二步:可以利用workbook和sheet页的名称直接获取sheet,也可以通过worksheets方法获取sheet对象集合。
  • 第三步:利用sheet[‘单元格名’]可以直接获取单元格对象,进而获取单元格的值。

除此之外,openpyxl还提供了许多方法,例如读写Comments等。有兴趣的同学可以通过文档进行学习https://openpyxl.readthedocs.io/en/stable/

xlsxwriter

xlsxwriter模块用于创建和写入Excel2010版本(即后缀为.xlsx)的文件。支持的版本有 Python 2.5, 2.6, 2.7, 3.1, 3.2, 3.3, 3.4, 3.5。

import xlsxwriter

workbook = xlsxwriter.Workbook('Expenses01.xlsx')
worksheet = workbook.add_worksheet()
expenses = (
    ['Rent', 1000],
    ['Gas',   100],
    ['Food',  300],
    ['Gym',    50],
)

row = 0
col = 0

for item, cost in (expenses):
    worksheet.write(row, col,     item)
    worksheet.write(row, col + 1, cost)
    row += 1

worksheet.write(row, 0, 'Total')
worksheet.write(row, 1, '=SUM(B1:B4)')

workbook.close()

写操作的步骤与openpyxl相同,只是方法不同,这里对单元格的写入必须要根据行列号进行定位。
想了解更多关于xlsxwriter的内容可以查看文档,https://xlsxwriter.readthedocs.io/。

xlrd和xlwt

xlrd和xlwt用于读写早于07版本的Excel文件(后缀为.xls)。

写操作

xlwt与xlsxwriter的用法基本一致,具体可参见http://xlwt.readthedocs.io/en/latest/。

读操作
  • 获取workbook:xlrd提供了open_workbook方法用于打开文件,获取workbook。
  • 获取sheet:xlrd可以通过workbook对象的sheet_by_index和sheet_by_name方法获得单个sheet对象,也可以通过sheets方法获取所有sheet对象
  • 获取行、列、单元格:可以通过sheet对象的row_values和col_values和cell_value分别获取行、列以及单元格的值。

下面是个简单的读取单元格数据的例子。

import xlrd

wb = xlrd.open_workbook(filename='student.xls')
sheets = wb.sheet_names()
ws = wb.sheet_by_name('student')
v = ws.cell(0, 1).value.encode('utf-8')

print v

如果想深入了解,可以查看文档http://xlrd.readthedocs.io/en/latest/。

xlutils

xlutils汇集了xlrd和xlwt,另外,还提供了对Excel文件的复制、修改和过滤。但这些功能现在都已用openpyxl实现。所以在这里不多介绍。

你可能感兴趣的:(python)