python-閫氳繃openpy鎿嶄綔excel,,鏍囩锛?a hre


鏍囩锛?a href='http://www.byrx.net/so/1/orange' title='orange'>orange

1.瀹夎 openpyxl

pip install openpyxl == 2.3.5 瀹夎鎸囧畾鐗堟湰

閬囧埌闂锛?/p>

鏌ヨ缁撴灉锛氳繖鏄洜涓虹數鑴戜笂鏈夊叾浠栬蒋浠朵篃鏈塸ip鍛戒护锛屾垜鐨勭數鑴戜笂鏄洜涓鸿浜唋oadrunner

瑙e喅鍔炴硶锛?/p>

https://stackoverflow.com/questions/7469361/pip-on-windows-giving-the-error-unknown-or-unsupported-command-install/8634923

鎴戠敤鐨勬湁鏁堝懡浠わ細

python -m pip install openpyxl 瀹夎鎴愬姛

2.瀹夎pillow

鐩存帴鐐瑰嚮瀹夎鍗冲彲锛?4浣嶉渶瑕佸拰python鐗堟湰涓€鑷达紱32涔熸槸

3.show openpyxl

c:\Python27>python -m pip show openpyxl

4.鍒涘缓excel鏂囦欢瀵硅薄

>>> from openpyxl import *

>>> wb = Workbook() #鍒涘缓excel鏂囦欢瀵硅薄锛屽啓鍦ㄥ唴瀛橀噷鐨勶紝涓嶄繚瀛樼殑璇濆湪鍏抽棴鍚庡氨娌′簡

>>> ws = wb.active #鑾峰彇excel鏂囦欢鐨勪竴涓猻heet

>>> ws[鈥楢1鈥榏=12 #鍐欏叆鍐呭 鍗曟牸鍐?/p>

>>> ws[鈥楢2鈥榏=12.333

>>> ws[鈥楢3鈥榏=u"灏忎竷"

>>> wb.save("e:\\test1.xlsx") #淇濆瓨鏂囦欢

>>> ws["B1"]=u"鍝ュ摜"

>>> ws["B2"]=u"鎴戞兂鎴戝摜鍝ヤ簡"

>>> wb.save("e:\\test1.xlsx")

>>> import time #鍐欏叆鏃堕棿

>>> ws["c1"]= time.strftime(u"%Y骞?m鏈?d鏃?%H鏃?M鍒?S绉?.encode("utf-8"),time.lo

caltime())

>>> wb.save("e:\\test1.xlsx")

importdatetime
importtime
ws[鈥楢2鈥榏=datetime.datetime.now()

5.鎵撳嵃鏈夋晥琛屽拰鍒楋細

>>> ws.columns

<generator object _cells_by_col at0x0000000002E117E0>

>>> for col in ws.columns:

...print col

...

(<Cell u鈥楽heet鈥?A1>, <Cellu鈥楽heet鈥?A2>, <Cell u鈥楽heet鈥?A3>)

(<Cell u鈥楽heet鈥?B1>, <Cellu鈥楽heet鈥?B2>, <Cell u鈥楽heet鈥?B3>)

(<Cell u鈥楽heet鈥?C1>, <Cellu鈥楽heet鈥?C2>, <Cell u鈥楽heet鈥?C3>)

>>> for col in ws.rows:

...print col

...

(<Cell u鈥楽heet鈥?A1>, <Cellu鈥楽heet鈥?B1>, <Cell u鈥楽heet鈥?C1>)

(<Cell u鈥楽heet鈥?A2>, <Cellu鈥楽heet鈥?B2>, <Cell u鈥楽heet鈥?C2>)

(<Cell u鈥楽heet鈥?A3>, <Cellu鈥楽heet鈥?B3>, <Cell u鈥楽heet鈥?C3>)

浠€涔堟槸鏈夋晥琛屽拰鍒楋紵

鏁版嵁鍐欏叆鐨勫彲鍖呭惈鏁翠綋鏁版嵁鐨勬渶澶ц寖鍥达紝杩欎釜鑼冨洿鍐呯殑閮芥槸鏈夋晥琛屽拰鍒?/p>

6.鍒涘缓sheet

>>> ws = wb.create_sheet("gloryroad")

>>> ws = wb.create_sheet("Ilove")

>>> ws = wb.create_sheet(u"鍝ュ摜")

>>>wb.save("e:\\test.xlsx")

7.鑾峰彇sheet鍚嶇О

>>> wb.get_sheet_names() #鑾峰彇鎵€鏈夊悕绉?/p>

[u鈥楽heet鈥? u鈥榞loryroad鈥? u鈥業 love鈥?u鈥榎u54e5\u54e5鈥榏

>>> ws =wb.get_sheet_by_name(u"鍝ュ摜") #鑾峰彇鎸囧畾鍚嶇О

>>> ws

<Worksheet "\u54e5\u54e5">

>>> printws.encode("gbk")

>>> ws =wb.get_sheet_by_name(wb.get_sheet_names()[-1])#鑾峰彇鎸囧畾浣嶇疆鐨剆heet鍚嶇О

>>> ws

<Worksheet "\u54e5\u54e5">

8.淇敼sheet鍚嶇О

>>> ws =wb.get_sheet_by_name(wb.get_sheet_names()[-1])#淇敼鍓嶉渶瑕佸厛鑾峰彇

>>> ws

<Worksheet "\u54e5\u54e5">

>>> ws.title = "lin"

>>> wb.get_sheet_names()

[u鈥楽heet鈥? u鈥榞loryroad鈥? u鈥業 love鈥? u鈥榣in鈥榏

>>> ws.title

u鈥榣in鈥?/p>

9.鑾峰彇sheet鍚嶇О

>>> ws = wb["I love"]

>>> ws

<Worksheet "I love">

>>> wb.sheetnames

[u鈥楽heet鈥? u鈥榞loryroad鈥? u鈥業 love鈥? u鈥榣in鈥榏

10. 閫氳繃琛屽拰鍒椾慨鏀硅〃鏍煎唴鐨勫唴瀹?/strong>

>>>ws.cell(row=1,column=2,value=123456)

<Cell u鈥業 love鈥?B1>

>>> ws["B1"].value

123456

>>>ws.cell(row=1,column=2,value="I love")

<Cell u鈥業 love鈥?B1>

>>> ws["B1"].value

u鈥業 love鈥?/p>

灏忕粌涔狅細

浠嶢1鍒癉4鍖哄煙鐨勬墍鏈夊崟鍏冩牸閮借鍐欏唴瀹癸紝鍐呭鏄鍙锋槸绗竴浣嶏紝鍒楀彿鏄浜屼綅

>>> for row in range(1,5):

...for col in range(1,5):

...ws.cell(row=row,column=col,value=str(row)+str(col))

...

<Cell u鈥業 love鈥?A1>

<Cell u鈥業 love鈥?B1>

<Cell u鈥業 love鈥?C1>

<Cell u鈥業 love鈥?D1>

<Cell u鈥業 love鈥?A2>

<Cell u鈥業 love鈥?B2>

<Cell u鈥業 love鈥?C2>

<Cell u鈥業 love鈥?D2>

<Cell u鈥業 love鈥?A3>

<Cell u鈥業 love鈥?B3>

<Cell u鈥業 love鈥?C3>

<Cell u鈥業 love鈥?D3>

<Cell u鈥業 love鈥?A4>

<Cell u鈥業 love鈥?B4>

<Cell u鈥業 love鈥?C4>

<Cell u鈥業 love鈥?D4>

>>>wb.save("e:\\test.xlsx")

>>>

11. 鎿嶄綔鏌愬垪涓墍鏈夋湁鏁堟暟鎹?/strong>

>>> print ws["A"]

(<Cell u鈥業 love鈥?A1>, <Cell u鈥業love鈥?A2>, <Cell u鈥業 love鈥?A3>, <Cell u鈥業 love鈥?

A4>)

12. 鎿嶄綔鏌愪袱鍒椾箣闂寸殑鎵€鏈夋湁鏁堝€?/strong>

>>> print ws["A:D"]

((<Cell u鈥業 love鈥?A1>, <Cell u鈥業love鈥?A2>, <Cell u鈥業 love鈥?A3>, <Cell u鈥業 love鈥?/p>

.A4>), (<Cell u鈥業 love鈥?B1>,<Cell u鈥業 love鈥?B2>, <Cell u鈥業 love鈥?B3>, <Cell u鈥業

love鈥?B4>), (<Cell u鈥業 love鈥?C1>,<Cell u鈥業 love鈥?C2>, <Cell u鈥業 love鈥?C3>, <Ce

ll u鈥業 love鈥?C4>), (<Cell u鈥業love鈥?D1>, <Cell u鈥業 love鈥?D2>, <Cell u鈥業 love鈥?D3

>, <Cell u鈥業 love鈥?D4>))

13. 鎵撳嵃鍑鸿幏鍙栧埌鐨勬寚瀹氫綅缃殑鍊?/strong>

>>> printws["A:D"][0][0].value

11

>>>ws["A:D"][0][0].value=鈥?2鈥?nbsp; 绗竴鍒楃殑绗竴琛岋細鍒楀湪鍓嶏紝琛屽湪鍚?/p>

14. 鍙栧嚭鍒楃殑鍊硷紱鍙栧嚭琛屽拰鍒楃殑鍊?/p>

>>> ws[1] 鍙栧嚭1琛?/p>

(<Cell u鈥業 love鈥?A1>, <Cell u鈥業love鈥?B1>, <Cell u鈥業 love鈥?C1>, <Cell u鈥業 love鈥?

D1>)

>>> ws[1:2] 鍙栧嚭1琛?鍒楃殑鍊?/p>

((<Cell u鈥業 love鈥?A1>, <Cell u鈥業love鈥?B1>, <Cell u鈥業 love鈥?C1>, <Cell u鈥業 love鈥?/p>

.D1>), (<Cell u鈥業 love鈥?A2>,<Cell u鈥業 love鈥?B2>, <Cell u鈥業 love鈥?C2>, <Cell u鈥業

love鈥?D2>))

灏忕粌涔狅細鍙栧嚭1鍒?琛岀殑鍐呭

鑷繁鐨勫仛娉曪紝鍙栦簡3鍒?/p>

>>> for i in range(1,3):

...print ws[i:3]

...

((<Cell u鈥業 love鈥?A1>, <Cell u鈥業love鈥?B1>, <Cell u鈥業 love鈥?C1>, <Cell u鈥業 love鈥?/p>

.D1>), (<Cell u鈥業 love鈥?A2>,<Cell u鈥業 love鈥?B2>, <Cell u鈥業 love鈥?C2>, <Cell u鈥業

love鈥?D2>), (<Cell u鈥業 love鈥?A3>,<Cell u鈥業 love鈥?B3>, <Cell u鈥業 love鈥?C3>, <Ce

ll u鈥業 love鈥?D3>))

((<Cell u鈥業 love鈥?A2>, <Cell u鈥業love鈥?B2>, <Cell u鈥業 love鈥?C2>, <Cell u鈥業 love鈥?/p>

.D2>), (<Cell u鈥業 love鈥?A3>,<Cell u鈥業 love鈥?B3>, <Cell u鈥業 love鈥?C3>, <Cell u鈥業

love鈥?D3>))

鑰佸笀鐨勬柟娉曪細

>>>forrowinws[1:3]:
...forjinrange(len(row)): 鍒╃敤姣忚鍏冪礌鐨勪釜鏁版潵纭畾鏈夊灏戝垪
...printrow[j].value

鍚屽鐨勬柟娉曪細

forrowsinws[1:3]:
forrowinrows:
printrow.value,
print

15. 鎸囧畾涓€涓寖鍥达紝閫氳繃闄愬埗鏈€澶ц鍙峰拰鍒楀彿锛屾渶灏忚鍙峰拰鍒楀彿鏉ュ疄鐜?/strong>

>>> for row in ws.iter_rows(min_row=1,max_col=3,max_row=3):

...for cell in row:

...print cell.value

...

22

12

13

21

22

23

31

32

33

>>> for row in ws.iter_rows(min_row=1,min_col=1,max_col=3,max_row=3):

...for cell in row:

...print cell.value

...

16. 鎵撳嵃鎵€鏈夌殑琛屽拰鍒?/strong>

>>> for row in ws.rows: 鎵撳嵃鎵€鏈夌殑琛?/p>

...print row

...

>>> for col in ws.columns: 鎵撳嵃鎵€鏈夌殑鍒?/p>

...print col

...

17. 鍐欏叆鐧惧垎鏁?/strong>

>>> ws["Z100"]="66%"

>>> printws["Z100"].value

66%

>>> wb.guess_type = True 涓篢rue鏃秂xcel閲岄潰灏辨槸甯歌绫诲瀷锛屼负False鏃舵槸鐧惧垎鏁帮紵

>>> ws["Z101"].value

>>>wb.save("e:\\test.xlsx")

18. 淇敼excel閲岄潰鐨勫€?/strong>

>>> wb =load_workbook("e:\\test.xlsx")#璇诲彇涓€涓幇鏈夌殑鏂囦欢杩涜鎿嶄綔

>>> ws = wb.active #鑾峰彇褰撳墠sheet

>>> ws[鈥楢1鈥榏.vlue

>>> ws[鈥楢1鈥榏.value

12L

>>> ws[鈥楢1鈥榏.value=12 #淇敼鍊?/p>

>>> ws[鈥楢1鈥榏.value

12

>>> ws[鈥楢2鈥榏.value

12.333

>>>ws[鈥楢2鈥榏.value=u"gege" #淇敼鍊?/p>

>>> ws[鈥楢2鈥榏.value

u鈥榞ege鈥?/p>

19. 鍒ゆ柇excel鍐呭瓨鍌ㄧ殑鏁板€兼牸寮忕被鍨?/strong>

>>> ws[鈥楢3鈥榏.value ="12%"

>>> ws[鈥楢3鈥榏.number_format

鈥楪eneral鈥?/p>

>>> ws[鈥楢20鈥榏.number_format

鈥楪eneral鈥?/p>

>>> wb.guess_type = True

>>> ws[鈥楢10鈥榏="12%"

>>> ws[鈥楢10鈥榏.number_format

鈥楪eneral鈥?/p>

>>> ws[鈥楢10鈥榏="12%"

>>>wb.save("e:\\test.xslx")

>>> ws[鈥楢10鈥榏.number_format

鈥楪eneral鈥?/p>

>>> import datetime

>>>ws["A11"]=datetime.datetime(1017,1,1)

>>> ws[鈥楢11鈥榏.number_format

鈥榶yyy-mm-dd h:mm:ss鈥?/p>

>>>

20. 鍐欏叆涓€涓猻um鍑芥暟

>>>ws["A11"]="=sum(1,1)"
>>>printws["A11"]
<Cellu鈥楽heet鈥?A11>
>>>printws["A11"].value
=sum(1,1)
>>>wb.save("e:\\sample.xlsx")

21. 鍚堝苟鍗曞厓鏍煎拰鍙栨秷鍚堝苟

ws.merge_cells("A1:C3")

ws.umerge_cells("A1:C3")

ws.merge_cells(start_row=2,start_column=1,end_row=2,end_column=4)
ws.unmerge_cells(start_row=2,start_column=1,end_row=2,end_column=4)

22. 鎻掑叆鍥剧墖

from openpyxl import load_workbook

from openpyxl.drawing.image import Image

wb = load_workbook(鈥榚:\\test.xlsx鈥?

ws1=wb.active

img = Image(鈥榚:\\1.png鈥?

ws1.add_image(img, 鈥楢1鈥?

# Save the file

wb.save("e:\\test.xlsx")

E:\>python a.py

Traceback (most recent call last):

File "a.py", line 13,in <module>

wb.save("e:\\test.xlsx")

File "C:\Python27\lib\site-packages\openpyxl\workbook\workbook.py",line 349,

in save

save_workbook(self, filename)

File"C:\Python27\lib\site-packages\openpyxl\writer\excel.py", line 267,in sa

ve_workbook

archive = ZipFile(filename,鈥榳鈥? ZIP_DEFLATED, allowZip64=True)

File"C:\Python27\lib\zipfile.py", line 756, in __init__

self.fp = open(file,modeDict[mode])

IOError: [Errno 13] Permission denied: 鈥榚:\\test.xlsx鈥?/p>

Excel娌℃湁鍏抽棴锛屾墍浠ユ姤閿欙紒锛侊紒

E:\>python a.py

23. 闅愯棌鍒?/strong>

ws1.column_dimensions.group(鈥楢鈥? 鈥楧鈥?hidden=True) 闅愯棌鍒?/p>

24. 鐢熸垚鏌卞舰鍥?/strong>

from openpyxl import load_workbook

from openpyxl import Workbook

from openpyxl.chart import BarChart,Reference, Series

wb = load_workbook(鈥榚:\\test.xlsx鈥?

ws1=wb.active

wb = Workbook()

ws = wb.active

for i in range(10): #鐢熸垚鏁版嵁

ws.append([i])

values = Reference(ws, min_col=1,min_row=1, max_col=1, max_row=10) #鏁版嵁鑼冨洿

chart = BarChart() #鐢熸垚鏌辩姸鍥惧璞?/p>

chart.add_data(values) #鏌辩姸鍥惧璞$敤values瀛樺偍鏁版嵁

ws.add_chart(chart, "E15")

# Save the file

wb.save("e:\\test.xlsx")

25. 鐢熸垚鍗曞厓鏍硷紝鏈夋牱寮?/strong>

# -*- coding: utf-8 -*-

from openpyxl import load_workbook

from openpyxl import Workbook

from openpyxl.worksheet.table import Table,TableStyleInfo

wb = Workbook()

ws = wb.active

data = [

[鈥楢pples鈥? 10000, 5000, 8000, 6000],

[鈥楶ears鈥? 2000, 3000, 4000,5000],

[鈥楤ananas鈥? 6000, 6000, 6500, 6000],

[鈥極ranges鈥? 500, 300,200, 700],

]

# add column headings. NB. these must bestrings

ws.append(["Fruit","2011", "2012", "2013", "2014"])

for row in data:

ws.append(row)

tab = Table(displayName="Table1",ref="A1:E5") #table鎸囩殑鏄浣跨敤鏍峰紡鐨勫尯鍩?/p>

# Add a default style with striped rows andbanded columns

style =TableStyleInfo(name="TableStyleMedium9", showFirstColumn=True,

showLastColumn=True,showRowStripes=True,

showColumnStripes=True)

tab.tableStyleInfo = style

ws.add_table(tab)

# Save the file

wb.save("e:\\test.xlsx")

26. 璁剧疆鍗曞厓鏍间腑鐨勫瓧浣?/strong>

# -*- coding: utf-8 -*-

from openpyxl import Workbook

from openpyxl.styles import colors

from openpyxl.styles import Font

wb = Workbook()

ws = wb.active

a1 = ws[鈥楢1鈥榏

d4 = ws[鈥楧4鈥榏

ft = Font(color=colors.RED) # color="FFBB00"锛岄鑹茬紪鐮佷篃鍙互璁惧畾棰滆壊

a1.font = ft

d4.font = ft

# If you want to change the color of aFont, you need to reassign it::

a1.font = Font(color=colors.RED,italic=True) # the change only affects A1

a1.value = "abc"

# Save the file

wb.save("e:\\test.xlsx")

16杩涘埗鐨勯鑹诧細

鍙互鍦ㄧ綉涓婃煡

27. 璁剧疆瀛椾綋鍜屽ぇ鍐?/strong>

# -*- coding: utf-8 -*-

from openpyxl import Workbook

from openpyxl.styles import colors

from openpyxl.styles import Font

wb = Workbook()

ws = wb.active

a1 = ws[鈥楢1鈥榏

d4 = ws[鈥楧4鈥榏

ft = Font(color="FFBB00") # color="FFBB00"锛岄鑹茬紪鐮佷篃鍙互璁惧畾棰滆壊

a1.font = ft

d4.font = ft

# If you want to change the color of aFont, you need to reassign it::

a1.font = Font(name=u鈥樺畫浣撯€?size=28,color=colors.RED, italic=True) # the change only

affects A1

a1.value = "abc"

# Save the file

wb.save("e:\\test.xlsx")

28. 璁剧疆涓虹矖浣?/strong>

# -*- coding: utf-8 -*-

from openpyxl import Workbook

from openpyxl.styles import colors

from openpyxl.styles import Font

wb = Workbook()

ws = wb.active

a1 = ws[鈥楢1鈥榏

d4 = ws[鈥楧4鈥榏

ft = Font(color="FFBB00") # color="FFBB00"锛岄鑹茬紪鐮佷篃鍙互璁惧畾棰滆壊

a1.font = ft

d4.font = ft

# If you want to change the color of aFont, you need to reassign it::

a1.font = Font(name=u鈥樺畫浣撯€?size=28,bold=True,color=colors.RED,italic=True) # the

change only affects A1

a1.value = "abc"

# Save the file

wb.save("e:\\test.xlsx")

29. 璁剧疆鎴愭牱寮忔ā鏉垮啀鍘荤粰鍗曞厓鏍煎簲鐢紝浣嗘槸涓嶆敮鎸佸涓悓鏃惰缃紝闇€瑕佺殑璇濆彲浠ラ€氳繃寰幆

# -*- coding: utf-8 -*-

from openpyxl import Workbook

from openpyxl.styles import Font

from openpyxl.styles import NamedStyle,Font, Border, Side,PatternFill

wb = Workbook()

ws = wb.active

highlight =NamedStyle(name="highlight")

highlight.font = Font(bold=True,size=20,color= "ff0100")

highlight.fill =PatternFill("solid", fgColor="DDDDDD")

bd = Side(style=鈥榯hick鈥? color="000000") #杈规棰滆壊鍙婄矖缁?/p>

highlight.border = Border(left=bd, top=bd,right=bd, bottom=bd) #杈规涓婁笅宸﹀彸

print dir(ws["A1"])

ws["A1"].style =highlight #璁剧疆鍗曞厓鏍兼牱寮?/p>

# Save the file

wb.save("e:\\test.xlsx")

30. 甯哥敤鐨勬牱寮忓拰灞炴€ц缃?/strong>

#-*-coding:utf-8-*-

fromopenpyxlimportWorkbook
fromopenpyxl.stylesimportFont
fromopenpyxl.stylesimportNamedStyle,Font,Border,Side,PatternFill
fromopenpyxl.stylesimportPatternFill,Border,Side,Alignment,Protection,Font

wb=Workbook()
ws=wb.active

ft=Font(name=u鈥樺井杞泤榛戔€?
size=11,
bold=False,
italic=False,
vertAlign=None,
underline=鈥榥one鈥?
strike=False,
color=鈥楩F000000鈥?

fill=PatternFill(fill_type="solid",
start_color=鈥楩FEEFFFF鈥?
end_color=鈥楩F001100鈥?

#杈规鍙互閫夋嫨鐨勫€间负锛氣€榟air鈥?鈥榤edium鈥?鈥榙ashDot鈥?鈥榙otted鈥?鈥榤ediumDashDot鈥?鈥榙ashed鈥?鈥榤ediumDashed鈥?鈥榤ediumDashDotDot鈥?鈥榙ashDotDot鈥?鈥榮lantDashDot鈥?鈥榙ouble鈥?鈥榯hick鈥?鈥榯hin鈥榏
#diagonal琛ㄧず瀵硅绾?br>bd=Border(left=Side(border_style="thin",
color=鈥楩F001000鈥?,
right=Side(border_style="thin",
color=鈥楩F110000鈥?,
top=Side(border_style="thin",
color=鈥楩F110000鈥?,
bottom=Side(border_style="thin",
color=鈥楩F110000鈥?,
diagonal=Side(border_style=None,
color=鈥楩F000000鈥?,
diagonal_direction=0,
outline=Side(border_style=None,
color=鈥楩F000000鈥?,
vertical=Side(border_style=None,
color=鈥楩F000000鈥?,
horizontal=Side(border_style=None,
color=鈥楩F110000鈥?
)

alignment=Alignment(horizontal=鈥榞eneral鈥?
vertical=鈥榖ottom鈥?
text_rotation=0,
wrap_text=False,
shrink_to_fit=False,
indent=0)

number_format=鈥楪eneral鈥?br>
protection=Protection(locked=True,
hidden=False)

ws["B5"].font=ft
ws["B5"].fill=fill
ws["B5"].border=bd
ws["B5"].alignment=alignment
ws["B5"].number_format=number_format

ws["B5"].value="gloryroad"

#Savethefile
wb.save("e:\\sample.xlsx")

python-閫氳繃openpy鎿嶄綔excel

鏍囩锛?a href='http://www.byrx.net/so/1/orange' title='orange'>orange

鍘熸枃鍦板潃锛歨ttps://www.cnblogs.com/qingqing-919/p/8337865.html

评论关闭