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')
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()