Openpyxl 是一个用来处理 Excel 格式文件的 Python 库,它能用来处理 Excel 2007 及以上版本的 excel 文件,也就是 .xlsx/.xlsm/.xltx/.xltm 格式的表格文件。
installation
使用 pip 安装
pip install openpyxl
usage
使用方法包括读和写,参考如下例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from openpyxl import Workbook, load_workbook
class ExcelWriter:
	def __init__(self, name):
		self.name = name
		self.wb = Workbook()
	def create_work_sheet(self, sheet_name, index):
		ws = self.wb.create_sheet(sheet_name, index)
		ws.sheet_properties.tabColor = "1072BA"
	def write_row(self):
		ws = self.wb.active
		for row in range(1, 10):  # 1 到 10 行
			ws.append(range(10))  # 10 列
		self.wb.save(self.name)
	def set_cell_value(self, row, col, value):
		ws = self.wb.active
		ws.cell(row=row, column=col).value = value
	def save(self):
		self.wb.save(self.name)
class ExcelReader:
	def __init__(self, path):
		self.path = path
		self.wb = load_workbook(path)
	def get_all_sheetnames(self):
		return self.wb.get_sheet_names
	def get_all_rows(self, sheet_name):
		"""
		按行进行迭代
		:param sheet_name:
		:return:
		"""
		ws = self.wb.get_sheet_by_name(sheet_name)  # 调用 get_sheet_by_name 如果 sheet name 不存在返回 None
		if ws is None:
			return
		rows = ws.rows
		for row in rows:
			if row is None:
				return
			yield [col.value for col in row]
	def get_cell_value(self, sheet_name, row, col):
		ws = self.wb.get_sheet_by_name(sheet_name)
		if ws is None:
			return
		return ws.cell(row=row, column=col).value
if __name__ == '__main__':
	writer = ExcelWriter("sample.xlsx")
	writer.write_row()
	reader = ExcelReader('sample.xlsx')
	sn = reader.get_all_sheetnames()
	for data in reader.get_all_rows('Sheet'):
		print data
图片图标
openpyxl 还有很多重量级的功能,比如绘图等等,具体可参考文档。
其他
Python 其他处理 Excel 的库