python3 處理office學(xué)習(xí)筆記

2019年6月5日11:54:12 發(fā)表評論 5,615 ℃

openpyxl模塊 處理Excel表格

pip install openpyxl

openpyxl.load_workbook() 接受文件

get_sheet_names() 獲取工作簿中所有表明的列表

get_sheet_by_name() 傳遞表名字符串獲得

get_active_sheet() 取得工作簿的活動表

cell() 傳入row,column 獲取單元格

>>>import openpyxl

>>> wb = openpyxl.load_workbook('test.xlsx')

>>>sheet = wb.get_sheet_by_name('Sheet3')

>>> c=sheet['B5']

>>> c.row

5

>>> c.column

2

>>> c.coordinate

'B5'

>>>sheet['A1':'C3'] 取得A1到C3

>>>list(sheet.columns)[1] 獲取B列

>>>sheet['B'] 獲取B列

>>>list(sheet.rows)[1] 獲取第二行

>>>sheet['2'] 獲取第二行

 

max_row 獲取最大行

max_column 獲取最大列

 

from openpyxl.utils import get_column_letter,column_index_from_string

get_column_letter(#) 列表數(shù)字轉(zhuǎn)換為字母

column_index_from_string() 列表字母轉(zhuǎn)換為數(shù)字

 

新建保存Excel

>>> wb = openpyxl.Workbook()

>>> sheet=wb.get_active_sheet()

>>> sheet.title='my name is test'

>>> sheet['B5']='hello Word'

>>> wb.save('my_name_is_test.xlsx')

 

設(shè)置字體風(fēng)格

>>> import openpyxl

>>> from openpyxl.styles import Font

>>> wb = openpyxl.Workbook()

>>> sheet = wb.get_sheet_by_name('Sheet')

>>> italic24Font = Font(size=24, italic=True)

>>> styleObj = Style(font=italic24Font)

>>> sheet['A'].style/styleObj

>>> sheet['A1'] = 'Hello world!'

>>> wb.save('styled.xlsx')

 

公式

>>> import openpyxl

>>> wb = openpyxl.Workbook()

>>> sheet = wb.get_active_sheet()

>>> sheet['A1'] = 200

>>> sheet['A2'] = 300

>>> sheet['A3'] = '=SUM(A1:A2)'

>>> wb.save('writeFormula.xlsx')

 

調(diào)整行高和列寬

>>> import openpyxl

>>> wb = openpyxl.Workbook()

>>> sheet = wb.get_active_sheet()

>>> sheet['A1'] = 'Tall row'

>>> sheet['B2'] = 'Wide column'

>>> sheet.row_dimensions[1].height = 70

>>> sheet.column_dimensions['B'].width = 20

>>> wb.save('dimensions.xlsx')

 

合并單元格

>>> import openpyxl

>>> wb = openpyxl.Workbook()

>>> sheet = wb.get_active_sheet()

>>> sheet.merge_cells('A1:D3')

>>> sheet['A1'] = 'Twelve cells merged together.'

>>> sheet.merge_cells('C5:D5')

>>> sheet['C5'] = 'Two merged cells.'

>>> wb.save('merged.xlsx')

拆分單元格

>>> import openpyxl

>>> wb = openpyxl.load_workbook('merged.xlsx')

>>> sheet = wb.get_active_sheet()

>>> sheet.unmerge_cells('A1:D3')

>>> sheet.unmerge_cells('C5:D5')

>>> wb.save('merged.xlsx')

 

凍結(jié)窗口

freeze_panes 的設(shè)置 凍結(jié)的行和列

sheet.freeze_panes = 'A2' 行 1

sheet.freeze_panes = 'B1' 列 A

sheet.freeze_panes = 'C1' 列 A 和列 B

sheet.freeze_panes = 'C2' 行 1 和列 A 和列 B

sheet.freeze_panes = 'A1'

sheet.freeze_panes = None 沒有凍結(jié)窗格

 

>>> import openpyxl

>>> wb = openpyxl.load_workbook('produceSales.xlsx')

>>> sheet = wb.get_active_sheet()

>>> sheet.freeze_panes = 'A2' #將 freeze_panes 屬性設(shè)置為'A2',行 1 將永遠(yuǎn)可見

>>> wb.save('freezeExample.xlsx')

 

圖表

openpyxl 支持利用工作表中單元格的數(shù)據(jù),創(chuàng)建條形圖、折線圖、散點圖和餅

圖。要創(chuàng)建圖表,需要做下列事情:

1.從一個矩形區(qū)域選擇的單元格,創(chuàng)建一個 Reference 對象。

2.通過傳入 Reference 對象,創(chuàng)建一個 Series 對象。

3.創(chuàng)建一個 Chart 對象。

4.將 Series 對象添加到 Chart 對象。

5.可選地設(shè)置Chart對象的drawing.top、drawing.left、drawing.width和drawing.height變量。

6.將 Chart 對象添加到 Worksheet 對象。

Reference 對象需要一些解釋。Reference 對象是通過調(diào)用openpyxl.charts. Reference()函數(shù)并傳入 3 個參數(shù)創(chuàng)建的:

1.包含圖表數(shù)據(jù)的 Worksheet 對象。

2.兩個整數(shù)的元組,代表矩形選擇區(qū)域的左上角單元格,該區(qū)域包含圖表數(shù)據(jù):元組中第一個整數(shù)是行,第二個整數(shù)是列。請注意第一行是 1,不是 0。

3.兩個整數(shù)的元組,代表矩形選擇區(qū)域的右下角單元格,該區(qū)域包含圖表數(shù)據(jù):元組中第一個整數(shù)是行,第二個整數(shù)是列。

>>> import openpyxl

>>> wb = openpyxl.Workbook()

>>> sheet = wb.get_active_sheet()

>>> for i in range(1, 11): # create some data in column A

sheet['A' + str(i)] = i

>>> refObj = openpyxl.charts.Reference(sheet, (1, 1), (10, 1))

>>> seriesObj = openpyxl.charts.Series(refObj, title='First series')

>>> chartObj = openpyxl.charts.BarChart()

>>> chartObj.append(seriesObj)

>>> chartObj.drawing.top = 50 # set the position

>>> chartObj.drawing.left = 100

>>> chartObj.drawing.width = 300 # set the size

>>> chartObj.drawing.height = 200

>>> sheet.add_ _chart(chartObj)

>>> wb.save('sampleChart.xlsx')

python3 處理office學(xué)習(xí)筆記

openpyxl.charts.BarChart() 創(chuàng)建一個條形圖

openpyxl.charts.LineChart() 建折線圖

openpyxl.charts.ScatterChart() 散點圖

openpyxl.charts.PieChart() 餅圖

 

PyPDF2 模塊 處理pdf文件

pip install PyPDF2

 

python-docx 模塊 處理Word文檔

pip install python-docx

 

csv 模塊 處理csv文件

import csv
csvFile = open("../files/test.csv", 'w+')
try:
    writer = csv.writer(csvFile)
    writer.writerow(('number', 'number plus 2', 'number times 2'))
    for i in range(10):
        writer.writerow( (i, i+2, i*2))
finally:
    csvFile.close()

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫、COS、CDN、短信等云產(chǎn)品特惠熱賣中

發(fā)表評論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: