1. 欢迎使用Anaconda和Spyder进行python开发,本身已经为我们安装好了openpyxl库。所以无需另外安装该库了。
2. 在使用前,需要导入openpyxl库:import openpyxl
3. 入门范例:
from openpyxl import Workbook
wb=Workbook()#创建一个工作簿
ws=wb.active#获取工作的激活工作表
ws['A1']=42#在A1中插入内容
ws.append([1,2,3])#这里其实是在第二行插入了3个数字,占用了三个单元格,即’A2’=1 ‘B2’=2 ‘C2’=3
import datetime
ws['A2']=datetime.datetime.now()#在A2中插入了当前时间,把上一句的那个1挤掉了
wb.save('sample.xlsx')#保存到当前目录
4. 如何读xlsx文件:
● 使用:
fromopenpyxl import load_workbook
wb=load_workbook(filename)
这个wb可以理解成一个在内存中的虚拟的xlsx表格。
函数原型:
openpyxl.reader.excel.load_workbook(filename,read_only=False, use_iterators=False, keep_vba=False, guess_types=False, data_only=False)
read_only: 表明是只读模式,这会使读取速度更快
use_iterators:默认采用只读模式,所有的worksheet将openpyxl.worksheet.iter_worksheet.IterableWorksheet类型的它的特点是跳过了empty cells
● 读取sheet:
ws=wb[sheetname]
ws=wb.get_sheet_by_name(sheetname)
用wb.get_sheet_names()可得到sheet名字
注意,读取sheet返回的是一个列表,取值时要用value,如:
x=[]
for i in sheet["B"]:
x.append(i.value)
#这样就把B列的所有行的数据读入到x这个list中了。
● 逐行读取:
ws.iter_rows(range_string=None, row_offset=0, column_offset=0)
参数解析:
range-string(string):单元格的范围:例如('A2:D5')
row_offset:添加行
column_offset:添加列
返回一个生成器,
注意取值时要用value,例如:
for x in ws.iter_rows():
print x[0].value
● 读连续单元格
cell_range = ws['A1':'C2']
● 读指定的单元格
ws.cell('B12').value
ws.cell(row=12,column=2).value
● 读所有单元格数据
ws.get_cell_collection() #ws为读取到的sheet
5. 如何写xlsx文件:
● 写一行:
ws.append(iterable) #添加一行到当前sheet的底部另起的新的一行
其中,iterable必须是list,tuple,dict,range,generator类型的。
1)如果是list,将list从头到尾顺序添加。
2)如果是dict,按照相应的键添加相应的键值。
append([‘A1’, ‘B1’, ‘C1’])
append({‘A’ : ‘This is A1’, ‘B’ : ‘This is B1’})
append({1 : ‘This is A1’, 3 : ‘This isC1’})
● 写一个单元格:
ws['B5'] = 5 # ws为读取到的sheet
注意:此时数据并还没写入到文件,它只是写入到内存中。需要保存文件,才能完成文件的写入:
wb.save(filename)
# openpyxl官方教程:http://openpyxl.readthedocs.io/en/default/index.html