一. openpyxl读
95%的时间使用的是这个模块,目前excel处理的模块,只有这个还在维护
1、workBook
1
2
|
workBook = openpyxl.load_workbook( 'path(.xlsx)' ).encode( 'gbk' ) print workBook |
2、sheet
1
2
|
sheetList = workBook.get_sheet_names() 获取所有sheet的名称,保存为列表格式 print sheetList |
3、cell
(1)sheet1=workBook.get_sheet_by_name('test1') 获取某一个具体的sheet
(2)rowsData=sheet1.rows 获取所有的行,返回一个迭代器
行和列都是从1开始的,不是从0
1
2
3
4
5
6
|
for i in rowsData: #print i #print type(i) 元组格式 for j in i: print j.coordinate(每一个cell的下表),j.value(cell的值), 打印出所有cell的内容 print |
(3)colsData=sheet1.columns 获取所有的列,并返回迭代器
(4)更新某个单元格
1
2
|
j.value = u '重新赋值' workBook.save(path(之前操作的路径)) |
4、单元格的定位
两种方式:
(1)c1=sheet1.cell(coordinate='B2')
1
|
print c1.value |
(2)c2=sheet1['B2'] 字典格式:通过key值找value
1
|
print c2.value |
(3)c1=sheet1.cell(row=2,column=3) 第二行第三列
1
|
print c1.value |
(4)切片,获取一个区域的单元格
1
2
3
4
5
6
7
8
9
10
|
area = sheet1[ 'C2' : 'D7' ] 得到一个元组 print area 元组里面嵌套元组 for i in area: # print i for j in i: pass # print j print j.coordinate, j.value = j.coordinate print |
二、写单元格
1、写workBook
1
|
workBook = openpyxl.Workbook() |
2、sheet
1
2
|
sheet1 = workBook.create_sheet(title = 'sheet1' ,index = 0 ) index = 0 定位第几个sheet |
3、cell
sheet1['B6'].value=u'testB6'
workBook.save(path)
4、在下一空行整行写入
1
|
sheet1.append([ 1 , 2 , 3 , 4 , 5 , 6 , 7 ]) |
三、excel相关的样式操作
1
2
3
4
|
import openpyxl from openpyxl.styles import PatternFill,Alignment,Font,colors workBook = openpyxl.Workbook() sheet1 = workBook.create_sheet( 'test' ) |
1、合并单元格,两种方式
1
2
|
sheet1.merge_cells(range_string = 'A2:G2' ) sheet1.merge_cells(start_row = 2 ,start_column = 'A' ,end_row = 2 ,end_column = 'G' ) |
2、设置排版样式:对齐方式
1
2
|
al = Alignment(horizontal = 'center' ) horizontal:left,center,right sheet1[ 'A2' ].alignment = al |
3、设置背景颜色
1
2
|
fill = PatternFill(patternType = 'solid' ,fgColor = colors.BLUE) sheet1[ 'A2' ].fill = fill |
4、字体的颜色
1
2
3
|
sheet1[A2].value font = Font(colors = colors.WHITE,size = 14 ) sheet1[ 'A2' ].font = font |
总结
以上所述是小编给大家介绍的python针对excel的操作方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:http://blog.csdn.net/beter138/article/details/79539844