基于Python對(duì)xsl&xslx文件進(jìn)行操作
讀取xsl格式文件-源碼
import xlrd # 讀取xls文件中的工作對(duì)象 wb = xlrd.open_workbook('示例文件/xxx物理學(xué)與信息技術(shù)學(xué)院.xls') print(wb) # 獲取所有的工作表名稱(chēng) sheet_names = wb.sheet_names() # print(sheet_names) # 選擇要讀取的具體工作表對(duì)象 sheet = wb.sheet_by_name(sheet_names[0]) # print(sheet) # 查看工作表的行和列數(shù) # print(sheet.nrows,sheet.ncols) # 329 6 # 通過(guò)循環(huán)的方式獲取工作表中每行和每列的數(shù)據(jù) for row in range(sheet.nrows): for col in range(sheet.ncols): # print(row,col) # 通過(guò)cell對(duì)象中的value屬性獲取具體單元格式中的數(shù)據(jù) value = sheet.cell(row, col).value # print(value) ''' # 將第一行以外的數(shù)據(jù)進(jìn)行格式化處理 if row > 0: # 將第一列的數(shù)據(jù)轉(zhuǎn)化為年月日的格式 if col == 0: value = xlrd.xldate_as_tuple(value,0) # print(value) # :>2d 表示月份和日期保留兩位數(shù) value = f'{value[0]}年{value[1]:>02d}月{value[2]:>02d}日' # print(value) else: # 將除了第一列的數(shù)據(jù)之外的數(shù)據(jù)保留兩位小數(shù) value = f'{value:.2f}' print(value,end='\t') print() # 實(shí)現(xiàn)換行的效果 '''
讀取xsl格式文件-源碼解析
這段代碼使用 xlrd 庫(kù)來(lái)讀取和處理一個(gè)名為 xxx物理學(xué)與信息技術(shù)學(xué)院.xls 的 Excel 文件。以下是對(duì)代碼的詳細(xì)分析:
1. 導(dǎo)入庫(kù)
import xlrd
xlrd 是一個(gè)用于讀取 Excel 文件的 Python 庫(kù)。
2. 打開(kāi)工作簿
wb = xlrd.open_workbook('示例文件/xxx物理學(xué)與信息技術(shù)學(xué)院.xls') print(wb)
xlrd.open_workbook 函數(shù)用于打開(kāi)一個(gè) Excel 文件,并返回一個(gè)工作簿對(duì)象 wb。
print(wb) 打印工作簿對(duì)象,通常會(huì)顯示文件路徑和一些元數(shù)據(jù)。
3. 獲取所有的工作表名稱(chēng)
sheet_names = wb.sheet_names() # print(sheet_names)
wb.sheet_names() 返回一個(gè)包含所有工作表名稱(chēng)的列表。
4. 選擇要讀取的具體工作表對(duì)象
sheet = wb.sheet_by_name(sheet_names[0]) # print(sheet)
wb.sheet_by_name(sheet_names[0]) 根據(jù)工作表名稱(chēng)獲取第一個(gè)工作表對(duì)象 sheet。
5. 查看工作表的行和列數(shù)
# print(sheet.nrows, sheet.ncols) # 329 6
sheet.nrows 返回工作表的行數(shù)。
sheet.ncols 返回工作表的列數(shù)。
6. 通過(guò)循環(huán)的方式獲取工作表中每行和每列的數(shù)據(jù)
for row in range(sheet.nrows): for col in range(sheet.ncols): value = sheet.cell(row, col).value # 將第一行以外的數(shù)據(jù)進(jìn)行格式化處理 if row > 0: # 將第一列的數(shù)據(jù)轉(zhuǎn)化為年月日的格式 if col == 0: value = xlrd.xldate_as_tuple(value, 0) value = f'{value[0]}年{value[1]:>02d}月{value[2]:>02d}日' else: # 將除了第一列的數(shù)據(jù)之外的數(shù)據(jù)保留兩位小數(shù) value = f'{value:.2f}' print(value, end='\t') print() # 實(shí)現(xiàn)換行的效果
外層循環(huán) for row in range(sheet.nrows) 遍歷每一行。
內(nèi)層循環(huán) for col in range(sheet.ncols) 遍歷每一列。
sheet.cell(row, col).value 獲取指定單元格的值。
如果當(dāng)前行不是第一行(即 row > 0),則對(duì)數(shù)據(jù)進(jìn)行格式化處理:
- 如果當(dāng)前列是第一列(即 col == 0),則將日期格式化為 年月日 的形式。
- 否則,將數(shù)值保留兩位小數(shù)。
print(value, end='\t') 打印格式化后的值,并使用制表符 \t 分隔。
print() 打印一個(gè)空行,實(shí)現(xiàn)換行的效果。
小結(jié)
這段代碼的主要功能是讀取一個(gè) Excel 文件,并對(duì)其中的數(shù)據(jù)進(jìn)行格式化處理:
將第一列的日期格式化為 年月日 的形式。
將其他數(shù)值保留兩位小數(shù)。
使用制表符分隔每列的數(shù)據(jù),并在每行結(jié)束后換行。
通過(guò)這種方式,代碼能夠有效地處理和展示 Excel 文件中的數(shù)據(jù)。
向xsl文件寫(xiě)入數(shù)據(jù)-源碼
import xlwt import random # 創(chuàng)建工作薄對(duì)象 wb = xlwt.Workbook() # 創(chuàng)建工作表對(duì)象 sheet = wb.add_sheet('高一三班') # 定義學(xué)生姓名 students = ['張三','李四','王五','里爾','飛天','閏土'] # 通過(guò)列表生成式生成 語(yǔ)數(shù)英成績(jī) scores = [[random.randrange(50,151) for i in range(3)] for j in range(6)] # print(scores) # 創(chuàng)建表頭數(shù)據(jù) titles = ['姓名','語(yǔ)文','數(shù)學(xué)','英語(yǔ)'] for index,title in enumerate(titles): # print(index,title) # 將數(shù)據(jù)添加到sheet工作表中 # 第一個(gè)參數(shù)表示工作行 第二個(gè)參數(shù)表示列 第三個(gè)參數(shù)表示具體內(nèi)容 sheet.write(0,index,title) # 將學(xué)生的姓名成績(jī)依次寫(xiě)入到文件中 for row in range(len(scores)): # print(row) sheet.write(row+1,0,students[row]) # 從第二行開(kāi)始寫(xiě)入相關(guān)的數(shù)據(jù) for col in range(len(scores[row])): sheet.write(row+1,col+1,scores[row][col]) # 將數(shù)據(jù)寫(xiě)入到工作薄當(dāng)中 wb.save('示例文件/考試成績(jī).xls')
向xsl文件寫(xiě)入數(shù)據(jù)-源碼解析
這段代碼使用了 xlwt 庫(kù)來(lái)創(chuàng)建一個(gè) Excel 文件,并在其中寫(xiě)入學(xué)生的姓名和隨機(jī)生成的語(yǔ)文、數(shù)學(xué)、英語(yǔ)成績(jī)。以下是對(duì)代碼的詳細(xì)分析:
1. 導(dǎo)入庫(kù)
import xlwt import random
xlwt 是一個(gè)用于創(chuàng)建和寫(xiě)入 Excel 文件的 Python 庫(kù)。
random 庫(kù)用于生成隨機(jī)數(shù)。
2. 創(chuàng)建工作簿對(duì)象
wb = xlwt.Workbook()
xlwt.Workbook() 創(chuàng)建一個(gè)新的工作簿對(duì)象 wb。
3. 創(chuàng)建工作表對(duì)象
sheet = wb.add_sheet('高一三班')
wb.add_sheet('高一三班') 在工作簿中添加一個(gè)名為 '高一三班' 的工作表,并返回該工作表對(duì)象 sheet。
4. 定義學(xué)生姓名
students = ['張三', '李四', '王五', '里爾', '飛天', '閏土']
students 列表包含了六個(gè)學(xué)生的姓名。
5. 生成成績(jī)數(shù)據(jù)
scores = [[random.randrange(50, 151) for i in range(3)] for j in range(6)]
使用列表生成式生成一個(gè)包含 6 個(gè)學(xué)生的語(yǔ)文、數(shù)學(xué)、英語(yǔ)成績(jī)的二維列表 scores。
random.randrange(50, 151) 生成一個(gè) 50 到 150 之間的隨機(jī)整數(shù)。
6. 創(chuàng)建表頭數(shù)據(jù)
titles = ['姓名', '語(yǔ)文', '數(shù)學(xué)', '英語(yǔ)']
titles 列表包含了表頭信息。
7. 寫(xiě)入表頭數(shù)據(jù)
for index, title in enumerate(titles): sheet.write(0, index, title)
使用 enumerate(titles) 遍歷 titles 列表,同時(shí)獲取索引 index 和標(biāo)題 title。
sheet.write(0, index, title) 將表頭數(shù)據(jù)寫(xiě)入工作表的第一行。
8. 寫(xiě)入學(xué)生姓名和成績(jī)
for row in range(len(scores)): sheet.write(row + 1, 0, students[row]) # 從第二行開(kāi)始寫(xiě)入相關(guān)的數(shù)據(jù) for col in range(len(scores[row])): sheet.write(row + 1, col + 1, scores[row][col])
外層循環(huán)遍歷 scores 列表的每一行。
sheet.write(row + 1, 0, students[row]) 將學(xué)生姓名寫(xiě)入工作表的第二行及之后的每一行的第一列。
內(nèi)層循環(huán)遍歷 scores[row] 列表的每一個(gè)元素。
sheet.write(row + 1, col + 1, scores[row][col]) 將成績(jī)寫(xiě)入工作表的第二行及之后的每一行的相應(yīng)列。
9. 保存工作簿
wb.save('示例文件/考試成績(jī).xls')
wb.save('示例文件/考試成績(jī).xls') 將工作簿保存為名為 '考試成績(jī).xls' 的文件。
小結(jié)
這段代碼的主要功能是創(chuàng)建一個(gè) Excel 文件,并在其中寫(xiě)入學(xué)生的姓名和隨機(jī)生成的語(yǔ)文、數(shù)學(xué)、英語(yǔ)成績(jī)。通過(guò)使用 xlwt 庫(kù),代碼能夠方便地創(chuàng)建和操作 Excel 文件,實(shí)現(xiàn)對(duì)數(shù)據(jù)的存儲(chǔ)和管理。
讀取xslx格式文件-源碼
import openpyxl # 加載工作薄 wb = openpyxl.load_workbook(r'示例文件\xx碩士信息.xlsx') # 獲取工作表名稱(chēng) print(wb.sheetnames) # ['Sheet1', 'Sheet2', 'Sheet3'] # 獲取要操作的工作表 sheet = wb.worksheets[0] # 獲取工作表中單元格的范圍 # print(sheet.dimensions) # A1:E64814 # 獲取行數(shù)和列數(shù) # print(sheet.max_row,sheet.max_column) # 64814 5 # 獲取指定單元格的值 # print(sheet.cell(3,3).value) # 獲取多個(gè)單元格的值 # print(sheet['A2:C5']) # 獲取單元格中所有的數(shù)據(jù) for row in range(2,69): for col in "ABCDE": value = sheet[f"{col}{row}"].value print(value,end='\t') print() # 換行
讀取xslx格式文件-源碼解析
這段代碼使用了 openpyxl 庫(kù)來(lái)加載和操作一個(gè)名為 xx碩士信息.xlsx 的 Excel 文件。以下是對(duì)代碼的詳細(xì)分析:
1. 導(dǎo)入庫(kù)
import openpyxl
openpyxl 是一個(gè)用于讀取和寫(xiě)入 Excel 文件的 Python 庫(kù)。
2. 加載工作簿
wb = openpyxl.load_workbook(r'示例文件\清華碩士信息.xlsx')
openpyxl.load_workbook(r'示例文件\xx碩士信息.xlsx') 加載指定的 Excel 文件,并返回一個(gè)工作簿對(duì)象 wb。
3. 獲取工作表名稱(chēng)
print(wb.sheetnames) # ['Sheet1', 'Sheet2', 'Sheet3']
wb.sheetnames 返回一個(gè)包含所有工作表名稱(chēng)的列表。
4. 獲取要操作的工作表
sheet = wb.worksheets[0]
wb.worksheets[0] 獲取工作簿中的第一個(gè)工作表對(duì)象 sheet。
5. 獲取工作表中單元格的范圍
print(sheet.dimensions) # A1:E64814
sheet.dimensions 返回工作表中單元格的范圍,例如 A1:E64814。
6. 獲取行數(shù)和列數(shù)
print(sheet.max_row,sheet.max_column) # 64814 5
sheet.max_row 返回工作表中的最大行數(shù)。
sheet.max_column 返回工作表中的最大列數(shù)。
7. 獲取指定單元格的值
print(sheet.cell(3,3).value)
sheet.cell(3,3).value 獲取第 3 行第 3 列單元格的值。
8. 獲取多個(gè)單元格的值
print(sheet['A2:C5'])
sheet['A2:C5'] 獲取從 A2 到 C5 的矩形區(qū)域內(nèi)的所有單元格的值。
9. 獲取單元格中所有的數(shù)據(jù)
for row in range(2,69): for col in "ABCDE": value = sheet[f"{col}{row}"].value print(value,end='\t') print() # 換行
外層循環(huán) for row in range(2,69) 遍歷從第 2 行到第 68 行。
內(nèi)層循環(huán) for col in "ABCDE" 遍歷從 A 到 E 的列。
sheet[f"{col}{row}"].value 獲取指定單元格的值。
print(value,end='\t') 打印單元格的值,并使用制表符 \t 分隔。
print() 打印一個(gè)空行,實(shí)現(xiàn)換行的效果。
小結(jié)
這段代碼的主要功能是加載一個(gè) Excel 文件,并從中讀取數(shù)據(jù)。通過(guò)使用 openpyxl 庫(kù),代碼能夠方便地訪問(wèn)和操作 Excel 文件中的單元格數(shù)據(jù),實(shí)現(xiàn)對(duì)數(shù)據(jù)的讀取和處理。
向xslx文件寫(xiě)入數(shù)據(jù)-源碼
import random import openpyxl # 創(chuàng)建工作薄 wb = openpyxl.Workbook() # 添加工作表 sheet = wb.active sheet.title = '測(cè)試成績(jī)' # 寫(xiě)入數(shù)據(jù) 定義標(biāo)題 titles = ("姓名", "射箭", "射擊", "足球") # 將標(biāo)題寫(xiě)入到文件中 for col_index, title in enumerate(titles): sheet.cell(1, col_index + 1, title) # 定義學(xué)生姓名 students = ("echo", "時(shí)針", "小夢(mèng)", "大盒", "小羽", "snowy", "辰辰", "痞老板", "Gscsed") # 將姓名和成績(jī)寫(xiě)入到文件中 for row_index, student in enumerate(students): sheet.cell(row_index + 2, 1, student) for col_index in range(2, 5): sheet.cell(row_index + 2, col_index, random.randrange(50, 101)) # 將數(shù)據(jù)保存到工作薄中 wb.save('示例文件\測(cè)試成績(jī).xlsx')
向xslx文件寫(xiě)入數(shù)據(jù)-源碼解析
這段代碼使用了 openpyxl 庫(kù)來(lái)創(chuàng)建一個(gè) Excel 文件,并在其中寫(xiě)入學(xué)生的姓名和隨機(jī)生成的射箭、射擊、足球成績(jī)。以下是對(duì)代碼的詳細(xì)分析:
1. 導(dǎo)入庫(kù)
import random import openpyxl
random 庫(kù)用于生成隨機(jī)數(shù)。
openpyxl 是一個(gè)用于創(chuàng)建和寫(xiě)入 Excel 文件的 Python 庫(kù)。
2. 創(chuàng)建工作簿
wb = openpyxl.Workbook()
openpyxl.Workbook() 創(chuàng)建一個(gè)新的工作簿對(duì)象 wb。
3. 添加工作表
sheet = wb.active sheet.title = '測(cè)試成績(jī)'
wb.active 獲取活動(dòng)工作表對(duì)象。
sheet.title = '測(cè)試成績(jī)' 將活動(dòng)工作表的標(biāo)題設(shè)置為 '測(cè)試成績(jī)'。
4. 寫(xiě)入數(shù)據(jù) 定義標(biāo)題
titles = ("姓名", "射箭", "射擊", "足球")
titles 元組包含了列標(biāo)題。
5. 將標(biāo)題寫(xiě)入到文件中
for col_index, title in enumerate(titles): sheet.cell(1, col_index + 1, title)
使用 enumerate(titles) 遍歷 titles 元組,同時(shí)獲取索引 col_index 和標(biāo)題 title。
sheet.cell(1, col_index + 1, title) 將標(biāo)題寫(xiě)入工作表的第一行。
6. 定義學(xué)生姓名
students = ("echo", "時(shí)針", "小夢(mèng)", "大盒", "小羽", "snowy", "辰辰", "痞老板", "Gscsed")
students 元組包含了學(xué)生的姓名。
7. 將姓名和成績(jī)寫(xiě)入到文件中
for row_index, student in enumerate(students): sheet.cell(row_index + 2, 1, student) for col_index in range(2, 5): sheet.cell(row_index + 2, col_index, random.randrange(50, 101))
外層循環(huán)遍歷 students 元組的每一個(gè)元素。
sheet.cell(row_index + 2, 1, student) 將學(xué)生姓名寫(xiě)入工作表的第二行及之后的每一行的第一列。
內(nèi)層循環(huán)遍歷射箭、射擊、足球這三列。
sheet.cell(row_index + 2, col_index, random.randrange(50, 101)) 將隨機(jī)生成的成績(jī)寫(xiě)入工作表的第二行及之后的每一行的相應(yīng)列。
8. 將數(shù)據(jù)保存到工作簿中
wb.save('示例文件\測(cè)試成績(jī).xlsx')
wb.save('示例文件\測(cè)試成績(jī).xlsx') 將工作簿保存為名為 '測(cè)試成績(jī).xlsx' 的文件。
小結(jié)
這段代碼的主要功能是創(chuàng)建一個(gè) Excel 文件,并在其中寫(xiě)入學(xué)生的姓名和隨機(jī)生成的射箭、射擊、足球成績(jī)。通過(guò)使用 openpyxl 庫(kù),代碼能夠方便地創(chuàng)建和操作 Excel 文件,實(shí)現(xiàn)對(duì)數(shù)據(jù)的存儲(chǔ)和管理。
到此這篇關(guān)于基于Python對(duì)xsl&xslx文件進(jìn)行操作的文章就介紹到這了,更多相關(guān)Python xsl&xslx文件操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談keras保存模型中的save()和save_weights()區(qū)別
這篇文章主要介紹了淺談keras保存模型中的save()和save_weights()區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05一文帶你精通Python中*args和**kwargs的應(yīng)用技巧
如果能在Python中創(chuàng)建適應(yīng)不同場(chǎng)景的函數(shù),而無(wú)需每次都重寫(xiě)它們,會(huì)使得操作簡(jiǎn)潔方便,這就是*args和**kwargs的魔力所在,下面我們就來(lái)看看它們的具體一些應(yīng)用技巧吧2024-03-03使用Python實(shí)現(xiàn)批量ping操作方法
這篇文章主要介紹了使用Python實(shí)現(xiàn)批量ping操作方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05Python自動(dòng)調(diào)用IE打開(kāi)某個(gè)網(wǎng)站的方法
這篇文章主要介紹了Python自動(dòng)調(diào)用IE打開(kāi)某個(gè)網(wǎng)站的方法,涉及Python調(diào)用系統(tǒng)win32組件的相關(guān)技巧,需要的朋友可以參考下2015-06-06Python?OpenCV中常用圖片處理函數(shù)小結(jié)
在計(jì)算機(jī)視覺(jué)和圖像處理領(lǐng)域,OpenCV(Open?Source?Computer?Vision?Library)是一個(gè)非常強(qiáng)大和流行的開(kāi)源庫(kù),本文將介紹一些常用的OpenCV函數(shù),希望對(duì)大家有所幫助2024-03-03