Python5.操作excel表格 xlrd库与excel的com接口和openpyxl库
生活随笔
收集整理的這篇文章主要介紹了
Python5.操作excel表格 xlrd库与excel的com接口和openpyxl库
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 1.讀取excel
- 2.寫入excel
- 3.文字 顏色、字體、大小修改
- 4.COM接口修改excel內(nèi)容
1.讀取excel
#讀取excel import xlrd book = xlrd.open_workbook("income.xlsx") print(f"包含表單數(shù)量 {book.nsheets}") #輸出:包含表單數(shù)量 3 print(f"表單的名分別為: {book.sheet_names()}") #輸出:表單的名分別為: ['2018', '2017', '2016'] #表單索引從0開始,獲取第一個表單對象 book.sheet_by_index(0) #獲取名為2018的表單對象 book.sheet_by_name('2018') #獲取所有的表單對象,放入一個列表返回 book.sheets() import xlrd book = xlrd.open_workbook("income.xlsx") #表單索引從0開始,獲取第一個表單對象 sheet = book.sheet_by_index(0) print(f"表單名:{sheet.name} ") #輸出:表單名:2018 print(f"表單索引:{sheet.number}") #輸出:表單索引:0 print(f"表單行數(shù):{sheet.nrows}") #輸出: 表單行數(shù):13 print(f"表單列數(shù):{sheet.ncols}") #輸出: 表單列數(shù):2 #行號、列號都是從0開始計算 print(f"單元格A1內(nèi)容是: {sheet.cell_value(rowx=0, colx=0)}") #輸出:單元格A1內(nèi)容是: 月份 print(f"第一行內(nèi)容是: {sheet.row_values(rowx=0)}") #輸出:第一行內(nèi)容是: ['月份', '收入'] print(f"第一列內(nèi)容是: {sheet.col_values(colx=0)}") #輸出:第一列內(nèi)容是: ['月份', 1.0, 2.0, '3*', 4.0, 5.0, 6.0, '7*', 8.0, 9.0, 10.0, 11.0, 12.0]#收入在第2列,求出收入的相加總和 incomes = sheet.col_values(colx=1,start_rowx=1) print(f"2018年總收入為: {sum(incomes)}") #輸出:2018年總收入為: 361302.0 import xlrd book = xlrd.open_workbook("income.xlsx") #表單索引從0開始,獲取第一個表單對象 sheet = book.sheet_by_index(0) #計算第一列單元格末尾包含"*"字符,第二列的數(shù)字輸入之和 #定義包含星號的月份收入 toSubstract = 0 #月份在第1列,獲取第一列的值 monthes = sheet.col_values(colx=0) #遍歷第一列的值 for row,month in enumerate(monthes):#如果第一列是str類型,并且以*結(jié)束if type(month) is str and month.endswith('*'):#獲取這個以*結(jié)尾的行的,所在第2列的值income = sheet.cell_value(row,1)print(month,income) #輸出:3* 30105.0 7* 30109.0toSubstract += income print("帶*月份的收入總和是:%2.f" % toSubstract) #輸出:帶*月份的收入總和是:60214 #計算一共有三張sheet表,第二列所有的收入之和,除去第一列內(nèi)容結(jié)尾包含"*"字符的收入除外 import xlrd #一共有三張sheet表 #打開工作簿 book = xlrd.open_workbook("income.xlsx")#得到所有sheet對象,以list列表返回sheet對象 book1 =book.sheets() #三張表的總收入之和 incomes = 0 #第0張表的第一列帶"*"字符的總收入之和 toSubstract = 0 #第1張表的第一列帶"*"字符的總收入之和 toSubstract1 = 0 #第2張表的第一列帶"*"字符的總收入之和 toSubstract2 = 0 for i in range(0,3):#三張表的所有總輸入之和,從第2行第2列開始incomes += sum(book1[i].col_values(colx=1,start_rowx=1)) print(f"三張表的所有收入之和{incomes}") #輸出:三張表的所有收入之和842394.0 #第0張表的第一列帶"*"字符的總收入之和 monthes = book1[0].col_values(colx=0) for row,month in enumerate(monthes):if type(month) is str and month.endswith('*'):income = book1[0].cell_value(row,1)toSubstract += income print(f"第0張表結(jié)尾帶*字符的收入之和{toSubstract}") #輸出:第0張表結(jié)尾帶*字符的收入之和60214.0 #第1張表的第一列帶"*"字符的總收入之和 monthes1 = book1[1].col_values(colx=0) for row,month in enumerate(monthes1):if type(month) is str and month.endswith('*'):income = book1[1].cell_value(row,1)toSubstract1 += income print(f"第1張表結(jié)尾帶*字符的收入之和{toSubstract1}") #輸出:第1張表結(jié)尾帶*字符的收入之和20774.0 #第2張表的第一列帶"*"字符的總收入之和 monthes2 = book1[2].col_values(colx=0) for row,month in enumerate(monthes2):if type(month) is str and month.endswith('*'):income = book1[2].cell_value(row,1)toSubstract2 += income print(f"第2張表結(jié)尾帶*字符的收入之和{toSubstract2}") #輸出:第2張表結(jié)尾帶*字符的收入之和19374.0 print(f"三張表總共第一列結(jié)尾除去*的收入之和是{incomes-toSubstract-toSubstract1-toSubstract2}") #輸出:三張表總共第一列結(jié)尾除去*的收入之和是742032.0
2.寫入excel
#安裝openpyxl pip install openpyxl #寫入excel import openpyxl #創(chuàng)建一個Excel workbook 對象 book = openpyxl.Workbook() #創(chuàng)建時,會自動產(chǎn)生一個sheet,通過active獲取 sh = book.active #修改當前 sheet 標題為 工資表 sh.title = '工資表' #增加一個名為 '年齡表' 的sheet,放在最后 sh1 = book.create_sheet('年齡表-最后') #增加一個 sheet,放在最前 sh2 = book.create_sheet('年齡表-最前',0) #增加一個 sheet,指定為第2個表單 sh3 = book.create_sheet('年齡表2',1) #根據(jù)名稱獲取某個sheet對象 sh = book['工資表'] #給第一個單元格A1寫入內(nèi)容 sh['A1'] = '你好' #根據(jù)行號列號第2行第2列單元格寫入內(nèi)容:白月黑羽, # 注意和 xlrd 不同,是從 1 開始 sh.cell(2,2).value = '白月黑羽' #保存文件 book.save('信息.xlsx')#獲取A1單元格內(nèi)容 print(sh['A1'].value) #輸出:你好 #獲取第2行第2列的內(nèi)容 print(sh.cell(2, 2).value) #輸出:白月黑羽 import openpyxl name2Age = {'張飛' : 38,'趙云' : 27,'許褚' : 36,'典韋' : 38,'關(guān)羽' : 39,'黃忠' : 49,'徐晃' : 43,'馬超' : 23, }#創(chuàng)建一個Excel workbook 對象 book = openpyxl.Workbook() #創(chuàng)建時,會自動產(chǎn)生一個sheet,通過active獲取 sh = book.active #標題命名為"年齡表" sh.title = '年齡表' #寫標題欄 sh['A1'] = '姓名' sh['B1'] = '年齡' #寫入內(nèi)容,從第2行開始 row = 2 #遍歷name2Age for name,age in name2Age.items():#第2行,第1列值是namesh.cell(row, 1).value = name#第2行,第2列值是agesh.cell(row, 2).value = age#行自動加1row += 1 #保存文件 book.save('信息.xlsx') import openpyxl name2Age = [['張飛' , 38 ] ,['趙云' , 27 ] ,['許褚' , 36 ] ,['典韋' , 38 ] ,['關(guān)羽' , 39 ] ,['黃忠' , 49 ] ,['徐晃' , 43 ] ,['馬超' , 23 ] ] #創(chuàng)建一個Excel workbook 對象 book = openpyxl.Workbook() #創(chuàng)建時,會自動產(chǎn)生一個sheet,通過active獲取 sh = book.active #標題命名為"年齡表" sh.title = '年齡表' #寫標題欄 sh['A1'] = '姓名' sh['B1'] = '年齡' #遍歷name2Age for row in name2Age:# 添加到下一行的數(shù)據(jù)sh.append(row) #保存文件 book.save('信息1.xlsx') #修改excel中的內(nèi)容: import openpyxl #加載 excel 文件 wb = openpyxl.load_workbook('income.xlsx') #得到表名稱為"2017"的sheet對象 sheet = wb['2017'] #修改A1單元格內(nèi)容為"修改一下" sheet['A1'] = '修改一下'#插入行、插入列 #在第2行的位置插入1行空白 sheet.insert_rows(2) #在第3行的位置插入3行空白 sheet.insert_rows(3,3) #在第2列的位置插入1列空白 sheet.insert_cols(2) #在第2列的位置插入3列空白 sheet.insert_cols(2,3)#刪除行、刪除列 #在第2行的位置刪除1行 sheet.delete_rows(2) #在第3行的位置刪除3行 sheet.delete_rows(3,3) #在第2列的位置刪除1列 sheet.delete_cols(2) #在第3列的位置刪除3列 sheet.delete_cols(3,3) #指定不同的文件名,可以另存為別的文件income-1.xlsx wb.save('income-1.xlsx')3.文字 顏色、字體、大小修改
#文字 顏色、字體、大小修改 import openpyxl #導入Font對象 和 colors 顏色常量 from openpyxl.styles import Font,colors#加載 excel 文件 wb = openpyxl.load_workbook('income.xlsx') #得到表名稱為"2018"的sheet對象 sheet = wb['2018']#指定單元格字體顏色, sheet['A1'].font = Font(color="981818", #指定顏色為紅色size=15, # 設(shè)定文字大小bold=True, # 設(shè)定為粗體italic=True # 設(shè)定為斜體)#指定第3行所有文字顏色為紅色 font = Font(color="981818") for y in range(1, 100): # 第 1 到 100 列sheet.cell(row=3, column=y).font = font#指定第2列所有文字加粗 font = Font(bold=True) for x in range(1, 100): # 第 1 到 100 行sheet.cell(row=x, column=2).font = font#指定不同的文件名,可以另存為別的文件income-1.xlsx wb.save('income-1.xlsx') #背景色修改 import openpyxl #導入Font對象 和 colors 顏色常量 from openpyxl.styles import PatternFill #導入加載圖片功能 from openpyxl.drawing.image import Image#加載 excel 文件 wb = openpyxl.load_workbook('income.xlsx') #得到表名稱為"2018"的sheet對象 sheet = wb['2018']#指定A1單元格背景色紅色 sheet['A1'].fill = PatternFill("solid", "E39191") #指定第2行背景顏色 fill = PatternFill("solid", "E39191") for y in range(1, 100): # 第 1 到 100 列sheet.cell(row=2, column=y).fill = fill#在第1行,第4列的位置插入圖片 sheet.add_image(Image('2.jpg'), 'D1')#指定不同的文件名,可以另存為別的文件income-1.xlsx wb.save('income-1.xlsx')4.COM接口修改excel內(nèi)容
#Excel COM接口修改excel內(nèi)容 第一步:安裝 pip install pywin32import win32com.clientexcel = win32com.client.Dispatch("Excel.Application") #可以讓excel 可見 excel.Visible = True #這里填寫要修改的Excel文件的絕對路徑 workbook = excel.Workbooks.Open(r"C:\Users\Administrator\PycharmProjects\days\income.xlsx") #得到 2017表單對象 sheet = workbook.Sheets('2017') #修改表單第1行第1列單元格內(nèi)容 sheet.Cells(1,1).Value="你好" #保存內(nèi)容 workbook.Save() #關(guān)閉該Excel文件 workbook.Close() #excel進程退出 excel.Quit() #釋放相關(guān)資源 sheet = None book = None excel.Quit() excel = None總結(jié)
以上是生活随笔為你收集整理的Python5.操作excel表格 xlrd库与excel的com接口和openpyxl库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小程序_文档_04_框架_视图层_W
- 下一篇: 物联网iot私有云平台搭建