精通Python——Office編程

1 Excel編程

1.1 讀Excel

1)Pandas

讀取

df=pd.read_excel('lemon.xlsx')#這個會直接默認讀取到這個Excel的第一個表單df=pd.read_excel('lemon.xlsx',sheet_name='sheet1')#可以通過sheet_name來指定讀取的表單df=pd.read_excel('lemon.xlsx',sheet_name=['sheet0','sheet1'])
df=pd.read_excel('lemon.xlsx',sheet_name=[1,2])

操作

data=df.ix[0].values      #0表示第一行 這裏讀取數據並不包含表頭
data=df.ix[[1,2]].values  #讀取指定多行的話
data=df.ix[1,2]           #讀取第一行第二列的值
data=df.ix[[1,2],['title','data']].values    #讀取第一行第二行的title以及data列的值
data=df.ix[:,['title','data']].values        #讀所有行的title以及data列的值
df.columns.values         #獲取列名
df['data'].values         #獲取指定列的值

2)xlrd

安裝Xlrd模塊

打開excel文檔

  • workbook = xlrd.open_ workbook('ttt.xIs')

獲取所有sheet

  • sheet_ name = workbook.sheet_names()[0] (返回類型爲sheet名字組成list )

獲取指定sheet

  • 根據sheet的sheet_ by_ index屬性索引獲取
  • 根據sheet的sheet_ by_ name屬性名字獲取

獲取指定sheet的名字,行數,列數

  • 調用指定sheet的name, nrows, ncols屬性

獲取sheet的內容

  • 將sheet按照二維數組,根據行列的方式訪問指定內容
  • 第0行第1列數據sheet.row(0)[1].value
  • 第1列第0行數據sheet.col(1)[0].value
  • 第0行第1列數據sheet.cell(0,1).value
  • rows = sheet.row_values(1) # 獲取第2行內容
  • cols = sheet.col_values(2) # 獲取第3列內容

1.2 寫Excel

1)openpyxl

官方文檔:https://openpyxl.readthedocs.io/en/stable/#usage-examples

import openpyxl


wb = openpyxl.Workbook()  # 創建一個Workbook對象

mySheet = wb.create_sheet(index=0, title="Mysheet")   # 創建一個Sheet對象

activeSheet = wb.get_active_sheet()    # 獲取活動的sheet

activeSheet.sheet_properties.tabColor = "205EB2"   # 設置活動表顏色

mySheet .title = "test"    # 設置mySheet的標題

directionCell = activeSheet.cell(row=4, column=2)   # 選擇Cell對象(B4單元格並賦值)

directionCell.value = "找到這個單元格"

mySheet ['A1'].value = "activesheet最大行:" + str(activeSheet.max_row)

mySheet ['A2'].value = "activesheet最大列:" + str(activeSheet.max_column)

wb.save("test.xlsx")   # 最後保存workbook

2)xlsxwriter

官方文檔:https://xlsxwriter.readthedocs.io/contents.html

import xlsxwriter

f = xlsxwriter.Workbook()                 # 創建excel文件

worksheet1 = f.add_worksheet('操作日誌')   # 括號內爲工作表表名

bold = f.add_format({
        'bold':  True,  # 字體加粗
        'border': 1,  # 單元格邊框寬度
        'align': 'left',  # 水平對齊方式
        'valign': 'vcenter',  # 垂直對齊方式
        'fg_color': '#F4B084',  # 單元格背景顏色
        'text_wrap': True,  # 是否自動換行
    })

//row:行, col:列, data:要寫入的數據, bold:單元格的樣式
worksheet1.write(row, col, data, bold)

// A1:從A1單元格開始插入數據,按行插入, data:要寫入的數據(格式爲一個列表), bold:單元格的樣式
worksheet1.write_row(“A1”,data,bold)

// A1:從A1單元格開始插入數據,按列插入, data:要寫入的數據(格式爲一個列表), bold:單元格的樣式
worksheet1.write_column(“A1”,data,bold)

// 第一個參數是插入的起始單元格,第二個參數是圖片你文件的絕對路徑
worksheet1.insert_image('A1','f:\\1.jpg')

worksheet1.write_url(row, col, "internal:%s!A1" % ("要關聯的工作表表名"), string="超鏈接顯示的名字")

workbook.add_chartsheet(type="")

參數中的type指的是圖表類型,圖表類型示例如下:
[area:面積圖,bar:條形圖,column:直方圖,doughnut:環狀圖,line:折線圖,
pie:餅狀圖,scatter:散點圖,radar:雷達圖,stock:箱線圖]

workbook.close()

摘抄於:https://www.jianshu.com/p/187e6b86e1d9

2 Word編程

安裝python-dock

官方文檔:http://python-docx.readthedocs.io/en/latest/

新建文檔: document = Document();document.save( 'filename.docx' )
添加文本: text = document.add paragraph( 'contentof the paragraph' )
更改項目符號: text.style ='' stylename'
添加標題: document.add heading( 'head-name' )
添加圖片: document.add picture( 'path-of-the-picture' )

字體設置
設置加粗: text.run.font.bold = True
設置字號: text.run.font.size= pt(sizeNumber)
設置字體顏色: text.run.font.color =

創建表格: table = document.add table(rows = ,cols = )
遍歷某單元格 : cell = table.cell(row_ num,col num)
添加文本: cell.add paragraph( "content" ,style =None)
添加另一表格: cell.add table(rows,cols)
返回該單元格內文本: String content = cell.text (只讀)
返回該單元格內表格list : table[] = cell.tables (只讀)

from docx import *
from docx.shared import Inches
 
# 創建一個已存在的 word 文檔的對象
file = Document()
 
# 添加標題,標題級別設置爲2級
file.add_heading('添加標題',level=2)
 
# 添加段落
paragraph = file.add_paragraph('這是新增的段落')
paragraph.add_run('加粗').bold = True
paragraph.add_run('這是斜體').italic = True
 
# 添加表格
table = file.add_table(rows=2, cols=2)

for i in range(2):
    for j in range(2):
        cell = table.cell(i, j)
        cell.text = "第"+str(i+1) +"行第"+str(j+1) +"列"
 
# 添加圖片,圖片是當前文件夾下的 img.png 圖片
file.add_picture('img.png',width=Inches(4.0))
 
# 保存新創建的 word 文檔
file.save('testDoc.docx')

注意:一個run對象是相同樣式文本的延續(只要文本的格式沒有改變,那麼就是一個run,一旦改變了就是列外一個run了)

摘自於:https://blog.csdn.net/qq_37648632/article/details/81661007

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章