python 使用xlsxwriter循環(huán)向excel中插入數(shù)據(jù)和圖片的操作
寫入Excel中后有顯示第一列客戶款號總庫存這些,開始寫在第12行第一列開始寫入,一行寫入5個(gè),然后再隔12行,再寫入下邊的數(shù)據(jù),圖片需要對應(yīng)客戶款號在Excel寫入圖片,類似下面的格式
import xlsxwriter import os #以空字符填充缺失值,不然寫入數(shù)據(jù)會報(bào)錯(cuò) data.fillna('',inplace=True) #創(chuàng)建一個(gè)新Excel文件并添加一個(gè)工作表。 workbook = xlsxwriter.Workbook('images.xlsx') worksheet = workbook.add_worksheet() # # 加寬第2列,,根據(jù)圖片縮放大小進(jìn)行調(diào)整。 worksheet.set_column('B:B', 20) worksheet.set_column('D:D', 20) worksheet.set_column('F:F', 20) worksheet.set_column('H:H', 20) ##寫入數(shù)據(jù)和圖片 for i in range(len(data)): for j in range(4): worksheet.write(i//5*16+j+12,i%5*2 ,['客戶款號','總庫存','零售數(shù)量','前一周'][j]) worksheet.write(i//5*16+j+12,i%5*2+1 ,data.iloc[i,0::].values[j]) #插入圖片,insert_image(位置行,位置列,文件名,縮放比例) if data.iloc[i,0::].values[0]+'.jpg' not in os.listdir('.\img\\'): print(i,'找不到',data.iloc[i,0::].values[0]+'.jpg') else: worksheet.insert_image(i//5*16,i%5*2+1,'img/'+data.iloc[i,0::].values[0]+'.jpg',{'x_scale': 0.1, 'y_scale': 0.12}) print(i,'寫入成功!') i+=1 workbook.close()
0 寫入成功! 1 寫入成功! 2 找不到 N038400237.jpg 3 找不到 N038400301.jpg 4 找不到 N039400310.jpg 5 找不到 N038400552.jpg 6 寫入成功! 7 找不到 N038401101.jpg 8 找不到 N039400105.jpg 9 找不到 N039400219.jpg
效果如下:
當(dāng)然還有合并單元格,設(shè)置單元格格式,以及處理圖片的操作沒寫,有時(shí)間再來補(bǔ)充!
補(bǔ)充:python對excel表格處理需要導(dǎo)入相關(guān)的庫:
(1)、操作xls格式的表格文件:
讀?。簒lrd
寫入:xlwt
修改(追加寫入):xlutils
(2)、操作xlsx格式的表格文件:
讀取/寫入:openpyxl
*如果用操作xls的方法去寫入xlsx文件,會導(dǎo)致文件損壞無法打開;反之一樣。
(一)、操作xls格式表格
1、讀取excel表格數(shù)據(jù)
import xlrd #從excle里讀數(shù)據(jù) import xlwt #創(chuàng)建新的表格寫入數(shù)據(jù) import xlutils #往已有表格中追加數(shù)據(jù) class IOExcel(object): def __init__(self,file): self.file = file def get_sheet(self,sheetname): excelfile=xlrd.open_workbook(self.file) self.sheet = excelfile.sheet_by_name(sheetname) return self.sheet #獲取第*行的數(shù)據(jù) def get_rowData(self,row): cols = self.sheet.ncols #獲取sheet頁有多少列 Cells = [] for i in range(0,cols): Cells.append(self.sheet.cell(row,i).value) return Cells
2、創(chuàng)建表格寫入數(shù)據(jù)
def write_excel(self,sheet_name, value): index = len(value) # 獲取需要寫入數(shù)據(jù)的行數(shù) workbook = xlwt.Workbook() # 新建一個(gè)工作簿 sheet = workbook.add_sheet(sheet_name) # 在工作簿中新建一個(gè)表格 for i in range(0, index): for j in range(0, len(value[i])): sheet.write(i, j, value[i][j]) #向表格中寫入數(shù)據(jù)(對應(yīng)的行和列) workbook.save(self.file) # 保存工作簿
3、向已存在表格中追加數(shù)據(jù)
def write_excel_xls_append(self,value): index = len(value) # 獲取需要寫入數(shù)據(jù)的行數(shù) workbook = xlrd.open_workbook(self.file) # 打開工作簿 sheets = workbook.sheet_names() # 獲取工作簿中的所有表格 worksheet = workbook.sheet_by_name(sheets[0]) # 獲取工作簿中所有表格中的的第一個(gè)表格 rows_old = worksheet.nrows # 獲取表格中已存在的數(shù)據(jù)的行數(shù) new_workbook = copy(workbook) # 將xlrd對象拷貝轉(zhuǎn)化為xlwt對象 new_worksheet = new_workbook.get_sheet(0) # 獲取轉(zhuǎn)化后工作簿中的第一個(gè)表格 for i in range(0, index): for j in range(0, len(value[i])): new_worksheet.write(i+rows_old, j, value[i][j]) # 追加寫入數(shù)據(jù),注意是從i+rows_old行開始寫入 new_workbook.save(self.file) # 保存工作簿
(二)、操作xlsx格式表格
wb = openpyxl.Workbook() #創(chuàng)建一個(gè)新的excel we = wb.create_sheet('第二頁',0) #修改sheet頁的名字;設(shè)置插入sheet頁的位置,默認(rèn)在上一頁后面( 初始創(chuàng)建的excel是只有一個(gè)默認(rèn)sheet頁的,所以設(shè)置位置的值大于1效果都一樣,都是在默認(rèn)sheet頁的后面接著) # we.title = '你好' # 修改sheet頁的名字 #操作單元格 we['A1']=123124 we['B2']='你好' print(we.cell(1,2,'123123').value) #設(shè)置cell的行號和列號和值,返回cell的值 wb.save('C:\\Users\\t_ful\\PycharmProjects\\test\\element\\t.xlsx') #保存表格
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
- Python數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表詳解
- Python 循環(huán)讀取數(shù)據(jù)內(nèi)存不足的解決方案
- Python 使用xlwt模塊將多行多列數(shù)據(jù)循環(huán)寫入excel文檔的操作
- Python matplotlib讀取excel數(shù)據(jù)并用for循環(huán)畫多個(gè)子圖subplot操作
- python 循環(huán)數(shù)據(jù)賦值實(shí)例
- Python中l(wèi)ist循環(huán)遍歷刪除數(shù)據(jù)的正確方法
- Python中循環(huán)后使用list.append()數(shù)據(jù)被覆蓋問題的解決
- python循環(huán)某一特定列的所有行數(shù)據(jù)(方法示例)
相關(guān)文章
python?如何實(shí)現(xiàn)跳過異常繼續(xù)執(zhí)行
這篇文章主要介紹了python?如何實(shí)現(xiàn)跳過異常繼續(xù)執(zhí)行,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07Python configparser模塊操作代碼實(shí)例
這篇文章主要介紹了Python configparser模塊操作代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06由淺入深學(xué)習(xí)TensorFlow MNIST 數(shù)據(jù)集
這篇文章主要由淺入深學(xué)習(xí)的講解TensorFlow MNIST 數(shù)據(jù)集,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09Python將list元素轉(zhuǎn)存為CSV文件的實(shí)現(xiàn)
這篇文章主要介紹了Python將list元素轉(zhuǎn)存為CSV文件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Python使用watchfiles實(shí)現(xiàn)監(jiān)控目錄變更
在工作中難免會碰到這樣的需求,監(jiān)控指定目錄,下面小編就來和大家介紹一下如何利用watchfiles 模塊實(shí)現(xiàn)監(jiān)控目錄的變更,感興趣的可以了解下2023-09-09