<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Excel是Windows環境下流行的、強大的電子試算表應用。無論是在工作中還是學習中我們都幾乎在不間斷的使用Excel來 記錄或者處理一些資料。 例如,可能有-個無聊的任務,需要從一個電子試算表拷貝一些資料,貼上到另一個電子試算表中。或者可能需要從幾千行中挑選幾行,根據某種條件稍作修改。或者需要檢視幾百份部門預算電子試算表,尋找其中的 指定內容。正是這種無聊無腦的電子試算表任務,如果讓人工來手動完成,則無論是時間升本還是精力成本都不是一件好事情,但是可以通過Python來完成。
7大庫功能對比圖如下(本文主要介紹:xlrd和xlwt):
xlrd模組用於讀取Excel的資料,速度非常快。支援.xls
和 .xlsx
兩種檔案格式的讀取
1. cmd控制檯安裝模組:
pip install xlrd
2. 匯入模組:
import xlrd
測試表如下:
xlrd.open_workbook(path)
wb = xlrd.open_workbook("./a.xls") print(wb)
執行結果:
<xlrd.book.Book object at 0x000001F905A33DC0>
wb.sheet_names()
sheet_names_list = wb.sheet_names() print(sheet_names_list)
執行結果:
['Sheet1', 'Sheet2', 'Sheet3']
wb.sheet_by_index(索引)
or wb.sheet_by_name("sheet表名")
# 方式1:索引順序獲取 sheet_1 = wb.sheet_by_index(0) # 方式2:名稱獲取 sheet_2 = wb.sheet_by_name("Sheet1")
1. 獲取sheet表總函數:sheet.nrows
2. 返回由該行中所有的單元格物件組成的列表,列表內是鍵值對:sheet.row(1)
,如:[列名1:'值',列名2:'值', ...]或者sheet.row_slice(1)
3. 返回指定行的所有單元格數值組成的列表:sheet.row_values(rowx, start_colx=0, end_colx=None)
,如:['值1','值2',...]
4. 返回指定行的有效長度:sheet.row_len(rowx)
# 1.獲取sheet表總函數:sheet.nrows print("總行數為:", sheet_1.nrows) # 2.返回由該行中所有的單元格物件組成的列表,列表內是鍵值對: sheet.row(1) print(sheet_1.row(1)) # 或者sheet.row_slice(1) print(sheet_1.row_slice(1)) # 3.返回指定行的所有單元格數值組成的列表: sheet.row_values(rowx, start_colx=0, end_colx=None) print(sheet_1.row_values(1)) # 4.返回指定行的有效長度:sheet.row_len(rowx) print("返回指定行的有效長度:", sheet_1.row_len(1)) print('-' * 20) # 5. 讀取整個表 for i in range(sheet_1.nrows): print(sheet_1.row_values(i))
執行結果:
總行數為: 4
[text:'物品1', empty:'', number:100.0, text:'EUR 0.1', text:'EUR 0.1']
[text:'物品1', empty:'', number:100.0, text:'EUR 0.1', text:'EUR 0.1']
['物品1', '', 100.0, 'EUR 0.1', 'EUR 0.1']
返回指定行的有效長度: 5
--------------------
['item', 'b', 'PCS', 'UNIT', 'TOTAL']
['物品1', '', 100.0, 'EUR 0.1', 'EUR 0.1']
['物品2', '', 100.0, 'EUR 0.1', 'EUR 0.1']
['物品3', '', 200.0, 'EUR 0.2', 'EUR 0.2']
1. 返回指定sheet表的有效列數:sheet.ncols
2. 返回由該列中所有的單元格物件組成的列表,列表內是鍵值對:sheet.col(1)
,如:[列名1:'值',列名2:'值', ...]
或者sheet.col_slice(1)
3. 返回指定列的所有單元格數值組成的列表:sheet.col_values(colx, start_colx=0, end_colx=None)
,如:['列名','值1','值2',...]
# 1. 返回指定sheet表的有效列數:sheet.ncols print("總列數為:", sheet_1.ncols) # 2. 返回由該列中所有的單元格物件組成的列表,列表內是鍵值對:sheet.col(1) print(sheet_1.col(1)) # 或者sheet.col_slice(1) print(sheet_1.col_slice(1)) # 3. 返回指定列的所有單元格數值組成的列表:sheet.col_values(colx, start_colx=0, end_colx=None) print(sheet_1.col_values(0)) # 帶列名 print(sheet_1.col_values(0, 1)) # 不帶列名 print('-' * 20) # 4. 讀取全部表 for i in range(sheet_1.ncols): print(sheet_1.col_values(i))
執行結果:
總列數為: 5
[text:'b', empty:'', empty:'', empty:'']
[text:'b', empty:'', empty:'', empty:'']
['item', '物品1', '物品2', '物品3']
['物品1', '物品2', '物品3']
--------------------
['item', '物品1', '物品2', '物品3']
['b', '', '', '']
['PCS', 100.0, 100.0, 200.0]
['UNIT', 'EUR 0.1', 'EUR 0.1', 'EUR 0.2']
['TOTAL', 'EUR 0.1', 'EUR 0.1', 'EUR 0.2']
xlwt 模組可以將資料寫入到 Excel 工作簿中。目前已支援寫入.xls
和 .xlsx
兩種檔案格式
1. cmd控制檯安裝模組:
pip install xlwt
2. 匯入模組:
import xlwt
1. 建立Excel表物件:xlwt.Workbook(encoding='utf8')
2. 新建sheet表:worksheet = workbook.add_sheet('Sheet1')
3. 寫入資料到指定單元格:worksheet.write(0, 0, "python")
。第一個引數是第 i 行,第二個是第 j 列,第三個是要寫的引數(字串或數位)
4. 儲存檔案:workbook.save('test.xlsx')
。目前已支援寫入.xls
和.xlsx
兩種檔案格式
測試程式碼:
import xlwt # 1. 建立Excel表物件 workbook = xlwt.Workbook(encoding='utf8') # 2. 新建sheet表 worksheet = workbook.add_sheet('Sheet1') # 3. 寫入資料到指定單元格 worksheet.write(0, 0, "python") # 4. 儲存檔案分兩種格式 workbook.save('test.xls') workbook.save('test.xlsx')
執行結果如下:生成兩個新檔案
測試程式碼:
import xlwt data_list = [('小白', '20', '男'), ('小黑', '21', '男'), ('小紅', '20', '女')] # 1. 建立Excel表物件 workbook = xlwt.Workbook(encoding='utf8') # 2. 新建sheet表 worksheet = workbook.add_sheet('Sheet1') # 3. 自定義列名 col1 = ('姓名', '年齡', '性別') # 4. 將列屬性元組col寫進sheet表單中第一行 for i in range(0, len(col1)): worksheet.write(0, i, col1[i]) # 5. 將資料寫進sheet表單中 for i in range(0, len(data_list)): data = data_list[i] for j in range(0, len(col1)): worksheet.write(i + 1, j, data[j]) # 6. 儲存檔案分兩種格式 workbook.save('test.xls')
執行結果:
cols_num是列的數目,可以通過修改12這個值,修改列的寬度
for c in range(len(col1)): worksheet.col(c).width = 256 * 24
執行結果:
設定行高,修改1600為別的值,可以修改行的高度
測試程式碼:
# 5. 將資料寫進sheet表單中 for i in range(0, len(data_list)): data = data_list[i] for j in range(0, len(col1)): worksheet.write(i + 1, j, data[j]) # 6. 設定行高 worksheet.row(i + 1).height_mismatch = True worksheet.row(i + 1).height = 1600 # 設定行高
執行結果:
常用設定單元格的屬性:
樣式 | 說明 |
---|---|
xlwt.Font() | 字型設定 |
xlwt.Pattern() | 背景設定 |
xlwt.Borders() | 邊框設定 |
xlwt.Alignment() | 對準設定 |
測試程式碼:
def body_style(): # 一、建立一個樣式物件,初始化樣式 style style = xlwt.XFStyle() # Create Style物件 # 二、字型風格設定 font = xlwt.Font() # Create Font物件 font.name = "SimSun" # 設定字型型別,宋體 font.colour_index = 4 # 設定字型顏色 font.height = 20 * 12 # 字型大小,12為字號,20為衡量單位 font.bont = True # 設定字型加粗 font.underline = True # 下劃線 font.italic = True # 斜體字 # 二、背景設定 pattern = xlwt.Pattern() pattern.pattern = xlwt.Pattern.SOLID_PATTERN # May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12 pattern.pattern_fore_colour = 4 # 給背景顏色賦值 # 三、邊框設定 borders = xlwt.Borders() # 建立邊框物件, # .DASHED:虛線;.NO_LINE:沒有 # 上下左右都新增邊框 borders.left = 1 borders.right = 1 borders.top = 1 borders.bottom = 1 # 設定邊框顏色 borders.left_colour = 2 borders.right_colour = 2 borders.top_colour = 2 borders.bottom_colour = 2 # 四、位置設定 alignment = xlwt.Alignment() alignment.horz = 1 # 設定水平位置,0是左對齊,1是居中,2是右對齊 alignment.wrap = 1 # 設定自動換行 # 五、設定好之後,全部都加到style上 style.alignment = alignment style.font = font style.borders = borders return style
應用樣式:
sheet.write(row, column, i) # 不帶格式 sheet.write(row, column, i, style) # 有格式
執行結果:
到此這篇關於Python自動化操作Excel方法詳解(xlrd,xlwt)的文章就介紹到這了,更多相關Python自動化操作Excel內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45