Python对Excel操作的方法主要有openpyxl、xlsxwriter、xlrd、xlwt、xlutils这几种,下面我们逐个进行介绍。
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提供的读操作非常简单:
除此之外,openpyxl还提供了许多方法,例如读写Comments等。有兴趣的同学可以通过文档进行学习https://openpyxl.readthedocs.io/en/stable/
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用于读写早于07版本的Excel文件(后缀为.xls)。
xlwt与xlsxwriter的用法基本一致,具体可参见http://xlwt.readthedocs.io/en/latest/。
下面是个简单的读取单元格数据的例子。
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汇集了xlrd和xlwt,另外,还提供了对Excel文件的复制、修改和过滤。但这些功能现在都已用openpyxl实现。所以在这里不多介绍。