創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!
創(chuàng)新互聯(lián)公司公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元福山做網(wǎng)站,已為上家服務(wù),為福山各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575這篇文章給大家分享的是有關(guān)python下處理excel表格的方法的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。
xlrd模塊
xlrd是python中一個(gè)第三方的用于讀取excle表格的模塊,很多企業(yè)在沒有使用計(jì)算機(jī)管理前大多使用表格來管理數(shù)據(jù),所以導(dǎo)入表格還是非常常用的!
安裝xlrd
pip install xlrd
excel結(jié)構(gòu)分析
一個(gè)excle表格包含多個(gè)sheet
一個(gè)sheet中包含多行多列
每個(gè)單元格具備唯一的行號(hào)和列號(hào)
常用函數(shù)
import xlrd # 讀取文件 work_book = xlrd.open_workbook("/Users/jerry/Desktop/公司機(jī)密數(shù)據(jù).xlsx") # 選取一個(gè)表 # 獲取所有所有表格名稱 print(work_book.sheet_names()) # 選擇第2個(gè) 索引從0開始 sheet = work_book.sheet_by_index(1) # 表格名稱 print(sheet.name) # 行數(shù) print(sheet.nrows) # 列數(shù) print(sheet.ncols) #批量讀取行數(shù)據(jù) # 取出第6行的全部?jī)?nèi)容包含數(shù)據(jù)類型 print(sheet.row(6)) # 取出第6行的內(nèi)容包含數(shù)據(jù)類型 從第3列開始獲取 print(sheet.row_slice(6,start_colx=3)) # 取出第6行的內(nèi)容包含數(shù)據(jù)類型 從第3列開始獲取 print(sheet.row_slice(6,start_colx=4,end_colx=5)) # 獲取該行所有數(shù)據(jù)類型 一數(shù)字表示 # print(sheet.row_types(6)) # print(sheet.row_values(6)) # 單元格的處理 print(sheet.cell(0,0).value) # 取值 print(sheet.cell(0,0).ctype) # 取類型 print(sheet.cell_value(2,0)) # 直接取值 print(sheet.row(0)[0]) # 先取行再取單元格 print(sheet.col(0)) # 第0列所有數(shù)據(jù) print(sheet.col(0)) # 先取列再取單元格 print(sheet.cell_type(0,0)) # 單元格位置轉(zhuǎn)換 print(xlrd.cellname(2,1)) print(xlrd.cellnameabs(0,2)) print(xlrd.colname(5)) # 時(shí)間類型轉(zhuǎn)換 # print(sheet.cell(6,5).value) # print(xlrd.xldate_as_datetime(sheet.cell(6,5).value,1))
案例:
讀取一個(gè)報(bào)價(jià)單 其第二個(gè)sheet包含合并單元格
文件地址:https://share.weiyun.com/5GaLY2m
import xlrd sheet = xlrd.open_workbook("報(bào)價(jià)單.xlsx").sheet_by_index(1) def get_text(row,col): # 判斷該坐標(biāo)是否是被合并的單元格 合并單元格的數(shù)據(jù)都在合并區(qū)域的第一個(gè)位置 for ces in sheet.merged_cells: if (row >= ces[0] and row < ces[1]) and (col >= ces[2] and col < ces[3]): return sheet.cell(ces[0],ces[2]).value # 取出合并區(qū)域的第一個(gè)數(shù)據(jù) return sheet.cell(row,col).value #正常取出對(duì)應(yīng)數(shù)據(jù) keys = sheet.row_values(1) # 獲取所有的列標(biāo)題 data = [] for row in range(2,sheet.nrows): dic = {} for col in range(sheet.ncols): k = keys[col] #確定key res = get_text(row,col) dic[k] = res # 確定值 并存儲(chǔ) data.append(dic) print(data) # 序列化為json import json json.dump(data,open("test.json","wt"),ensure_ascii=False)
xlwt模塊
是python中一個(gè)第三方的用于寫入excle數(shù)據(jù)到表格的模塊
用代碼來編寫exlce是非常低效的 所以該模塊了解即可。
import xlwt # 創(chuàng)建工作簿 work = xlwt.Workbook() # 創(chuàng)建一個(gè)表 sheet = work.add_sheet("員工信息數(shù)據(jù)") #創(chuàng)建一個(gè)字體對(duì)象 font = xlwt.Font() font.name = "Times New Roman" # 字體名稱 font.bold = True # 加粗 font.italic = True # 斜體 font.underline = True # 下劃線 #創(chuàng)建一個(gè)樣式對(duì)象 style = xlwt.XFStyle() style.font = font # 寫入標(biāo)題 for k in keys: sheet.write(0,keys.index(k),k,style) # 寫入數(shù)據(jù) for i in infos: for k in keys: sheet.write(1 + infos.index(i),keys.index(k),label = i[k]) # 保存至文件 work.save("test.xls")
import xlrd import pymysql # 讀取文件 work_book = xlrd.open_workbook("/xxx/xxx.xlsx") # 選取一個(gè)表 sheet = work_book.sheet_by_index(0) # 遍歷表格數(shù)據(jù) datas = [] for row in range(1,sheet.nrows): temp_list =[] for col in range(sheet.ncols): value = sheet.cell_value(row,col) temp_list.append(value) datas.append(temp_list) # 打開數(shù)據(jù)庫連接 db = pymysql.connect(host='localhost', port=3306, user='username', passwd='password', db='database_name', charset='utf8') # 使用cursor()方法獲取操作游標(biāo) cursor = db.cursor() # SQL 插入語句 sql = "INSERT INTO SHOP(shop_code, shop_name, month) VALUES (%s,%s,%s)" try: # 執(zhí)行sql語句 cursor.executemany(sql, datas) # 提交到數(shù)據(jù)庫執(zhí)行 db.commit() except : # 如果發(fā)生錯(cuò)誤則回滾 db.rollback() # 關(guān)閉游標(biāo) cursor.close() # 關(guān)閉數(shù)據(jù)庫連接 db.close()
感謝各位的閱讀!關(guān)于python下處理excel表格的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!