亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python自動(dòng)化操作Excel方法詳解(xlrd,xlwt)

 更新時(shí)間:2022年06月07日 08:31:23   作者:小袁ITSuper  
Excel是Windows環(huán)境下流行的、強(qiáng)大的電子表格應(yīng)用。本文將詳解用Python利用xlrd和xlwt實(shí)現(xiàn)自動(dòng)化操作Excel的方法詳細(xì),需要的可以參考一下

一、Python操作Excel 7大庫(kù)對(duì)比

Excel是Windows環(huán)境下流行的、強(qiáng)大的電子表格應(yīng)用。無(wú)論是在工作中還是學(xué)習(xí)中我們都幾乎在不間斷的使用Excel來(lái) 記錄或者處理一些數(shù)據(jù)。 例如,可能有-個(gè)無(wú)聊的任務(wù),需要從一個(gè)電子表格拷貝一些數(shù)據(jù),粘貼到另一個(gè)電子表格中?;蛘呖赡苄枰獜膸浊兄刑暨x幾行,根據(jù)某種條件稍作修改?;蛘咝枰榭磶装俜莶块T(mén)預(yù)算電子表格,尋找其中的 指定內(nèi)容。正是這種無(wú)聊無(wú)腦的電子表格任務(wù),如果讓人工來(lái)手動(dòng)完成,則無(wú)論是時(shí)間升本還是精力成本都不是一件好事情,但是可以通過(guò)Python來(lái)完成。

7大庫(kù)功能對(duì)比圖如下(本文主要介紹:xlrd和xlwt):

二、xlrd 讀取excel操作

xlrd模塊用于讀取Excel的數(shù)據(jù),速度非常快。支持.xls.xlsx兩種文件格式的讀取

1. cmd控制臺(tái)安裝模塊

pip install xlrd

2. 導(dǎo)入模塊

import xlrd

測(cè)試表如下:

1. 打開(kāi)文件

xlrd.open_workbook(path)

wb = xlrd.open_workbook("./a.xls")
print(wb)

運(yùn)行結(jié)果:

<xlrd.book.Book object at 0x000001F905A33DC0>

2. 獲取所有表名

wb.sheet_names()

sheet_names_list = wb.sheet_names()
print(sheet_names_list)

運(yùn)行結(jié)果:

['Sheet1', 'Sheet2', 'Sheet3']

3. 指定sheet表

wb.sheet_by_index(索引) or wb.sheet_by_name("sheet表名")

# 方式1:索引順序獲取
sheet_1 = wb.sheet_by_index(0)

# 方式2:名稱(chēng)獲取
sheet_2 = wb.sheet_by_name("Sheet1")

4. 對(duì)sheet表的行操作

1. 獲取sheet表總函數(shù):sheet.nrows

2. 返回由該行中所有的單元格對(duì)象組成的列表,列表內(nèi)是鍵值對(duì):sheet.row(1),如:[列名1:'值',列名2:'值', ...]或者sheet.row_slice(1)

3. 返回指定行的所有單元格數(shù)值組成的列表:sheet.row_values(rowx, start_colx=0, end_colx=None) ,如:['值1','值2',...]

4. 返回指定行的有效長(zhǎng)度:sheet.row_len(rowx)

# 1.獲取sheet表總函數(shù):sheet.nrows
print("總行數(shù)為:", sheet_1.nrows)
# 2.返回由該行中所有的單元格對(duì)象組成的列表,列表內(nèi)是鍵值對(duì): sheet.row(1)
print(sheet_1.row(1))
# 或者sheet.row_slice(1)
print(sheet_1.row_slice(1))
# 3.返回指定行的所有單元格數(shù)值組成的列表: sheet.row_values(rowx, start_colx=0, end_colx=None)
print(sheet_1.row_values(1))
# 4.返回指定行的有效長(zhǎng)度:sheet.row_len(rowx)
print("返回指定行的有效長(zhǎng)度:", sheet_1.row_len(1))

print('-' * 20)
# 5. 讀取整個(gè)表
for i in range(sheet_1.nrows):
    print(sheet_1.row_values(i))

運(yùn)行結(jié)果:

總行數(shù)為: 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']
返回指定行的有效長(zhǎng)度: 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']

5. 對(duì)sheet表的列操作

1. 返回指定sheet表的有效列數(shù):sheet.ncols

2. 返回由該列中所有的單元格對(duì)象組成的列表,列表內(nèi)是鍵值對(duì):sheet.col(1),如:[列名1:'值',列名2:'值', ...]或者sheet.col_slice(1)

3. 返回指定列的所有單元格數(shù)值組成的列表:sheet.col_values(colx, start_colx=0, end_colx=None),如:['列名','值1','值2',...]

# 1. 返回指定sheet表的有效列數(shù):sheet.ncols
print("總列數(shù)為:", sheet_1.ncols)
# 2. 返回由該列中所有的單元格對(duì)象組成的列表,列表內(nèi)是鍵值對(duì):sheet.col(1)
print(sheet_1.col(1))
# 或者sheet.col_slice(1)
print(sheet_1.col_slice(1))
# 3. 返回指定列的所有單元格數(shù)值組成的列表: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))

運(yùn)行結(jié)果:

總列數(shù)為: 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 寫(xiě)入Excel表操作

xlwt 模塊可以將數(shù)據(jù)寫(xiě)入到 Excel 工作簿中。目前已支持寫(xiě)入.xls.xlsx兩種文件格式

1. cmd控制臺(tái)安裝模塊

pip install xlwt

2. 導(dǎo)入模塊

import xlwt

1. 寫(xiě)入單個(gè)數(shù)據(jù)

1. 創(chuàng)建Excel表對(duì)象:xlwt.Workbook(encoding='utf8')

2. 新建sheet表:worksheet = workbook.add_sheet('Sheet1')

3. 寫(xiě)入數(shù)據(jù)到指定單元格:worksheet.write(0, 0, "python")。第一個(gè)參數(shù)是第 i 行,第二個(gè)是第 j 列,第三個(gè)是要寫(xiě)的參數(shù)(字符串或數(shù)字)

4. 保存文件:workbook.save('test.xlsx')。目前已支持寫(xiě)入.xls.xlsx兩種文件格式

測(cè)試代碼:

import xlwt

# 1. 創(chuàng)建Excel表對(duì)象
workbook = xlwt.Workbook(encoding='utf8')
# 2. 新建sheet表
worksheet = workbook.add_sheet('Sheet1')
# 3. 寫(xiě)入數(shù)據(jù)到指定單元格
worksheet.write(0, 0, "python")
# 4. 保存文件分兩種格式
workbook.save('test.xls')
workbook.save('test.xlsx')

運(yùn)行結(jié)果如下:生成兩個(gè)新文件

2. 寫(xiě)入多個(gè)數(shù)據(jù)

測(cè)試代碼:

import xlwt

data_list = [('小白', '20', '男'), ('小黑', '21', '男'), ('小紅', '20', '女')]
# 1. 創(chuàng)建Excel表對(duì)象
workbook = xlwt.Workbook(encoding='utf8')
# 2. 新建sheet表
worksheet = workbook.add_sheet('Sheet1')
# 3. 自定義列名
col1 = ('姓名', '年齡', '性別')
# 4. 將列屬性元組col寫(xiě)進(jìn)sheet表單中第一行
for i in range(0, len(col1)):
    worksheet.write(0, i, col1[i])
# 5. 將數(shù)據(jù)寫(xiě)進(jìn)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')

運(yùn)行結(jié)果:

3. 設(shè)置列寬

cols_num是列的數(shù)目,可以通過(guò)修改12這個(gè)值,修改列的寬度

for c in range(len(col1)):
    worksheet.col(c).width = 256 * 24

運(yùn)行結(jié)果:

4. 設(shè)置行高

設(shè)置行高,修改1600為別的值,可以修改行的高度

測(cè)試代碼:

# 5. 將數(shù)據(jù)寫(xiě)進(jìn)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. 設(shè)置行高
        worksheet.row(i + 1).height_mismatch = True
        worksheet.row(i + 1).height = 1600  # 設(shè)置行高

運(yùn)行結(jié)果:

5. 設(shè)置單元格風(fēng)格

常用設(shè)置單元格的屬性:

樣式說(shuō)明
xlwt.Font()字體設(shè)置
xlwt.Pattern()背景設(shè)置
xlwt.Borders()邊框設(shè)置
xlwt.Alignment()對(duì)準(zhǔn)設(shè)置

測(cè)試代碼:

def body_style():
    # 一、創(chuàng)建一個(gè)樣式對(duì)象,初始化樣式 style
    style = xlwt.XFStyle()  # Create Style對(duì)象

    # 二、字體風(fēng)格設(shè)置
    font = xlwt.Font()  # Create Font對(duì)象
    font.name = "SimSun"  # 設(shè)置字體類(lèi)型,宋體
    font.colour_index = 4  # 設(shè)置字體顏色
    font.height = 20 * 12  # 字體大小,12為字號(hào),20為衡量單位
    font.bont = True  # 設(shè)置字體加粗
    font.underline = True  # 下劃線
    font.italic = True  # 斜體字

    # 二、背景設(shè)置
    pattern = xlwt.Pattern()
    pattern.pattern = xlwt.Pattern.SOLID_PATTERN  # May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12
    pattern.pattern_fore_colour = 4  # 給背景顏色賦值

    # 三、邊框設(shè)置
    borders = xlwt.Borders()  # 創(chuàng)建邊框?qū)ο螅?   # .DASHED:虛線;.NO_LINE:沒(méi)有
    # 上下左右都添加邊框
    borders.left = 1
    borders.right = 1
    borders.top = 1
    borders.bottom = 1
    # 設(shè)置邊框顏色
    borders.left_colour = 2
    borders.right_colour = 2
    borders.top_colour = 2
    borders.bottom_colour = 2

    # 四、位置設(shè)置
    alignment = xlwt.Alignment()
    alignment.horz = 1  # 設(shè)置水平位置,0是左對(duì)齊,1是居中,2是右對(duì)齊
    alignment.wrap = 1  # 設(shè)置自動(dòng)換行

    # 五、設(shè)置好之后,全部都加到style上
    style.alignment = alignment
    style.font = font
    style.borders = borders
    return style

應(yīng)用樣式:

sheet.write(row, column, i)  # 不帶格式
sheet.write(row, column, i, style)  # 有格式

運(yùn)行結(jié)果:

到此這篇關(guān)于Python自動(dòng)化操作Excel方法詳解(xlrd,xlwt)的文章就介紹到這了,更多相關(guān)Python自動(dòng)化操作Excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python常見(jiàn)文件操作的函數(shù)示例代碼

    Python常見(jiàn)文件操作的函數(shù)示例代碼

    Python常見(jiàn)文件操作的函數(shù)示例代碼,學(xué)習(xí)python的朋友可以參考下。
    2011-11-11
  • python 批量下載bilibili視頻的gui程序

    python 批量下載bilibili視頻的gui程序

    這篇文章主要介紹了python 批量下載bilibili視頻的gui程序,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • 詳解Python中的數(shù)據(jù)清洗工具flashtext

    詳解Python中的數(shù)據(jù)清洗工具flashtext

    FlashText是GitHub上的一個(gè)開(kāi)源Python庫(kù),正如之前所提到的,它在提取關(guān)鍵字和替換關(guān)鍵字任務(wù)上有著極高的性能。本文將詳解一下flashtext的使用,需要的可以參考一下
    2022-06-06
  • 一篇文章了解Python中常見(jiàn)的序列化操作

    一篇文章了解Python中常見(jiàn)的序列化操作

    這篇文章主要給大家介紹了軟玉Python中常見(jiàn)的序列化操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python讀寫(xiě)unicode文件的方法

    Python讀寫(xiě)unicode文件的方法

    這篇文章主要介紹了Python讀寫(xiě)unicode文件的方法,涉及Python針對(duì)文件的讀取及編碼操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Python中TypeError: int object is not iterable錯(cuò)誤分析及解決辦法

    Python中TypeError: int object is not 

    在Python中,當(dāng)你嘗試對(duì)一個(gè)非迭代對(duì)象(如整數(shù)、浮點(diǎn)數(shù)等)使用迭代操作(如for循環(huán)、列表推導(dǎo)式中的迭代等)時(shí),會(huì)觸發(fā)TypeError: 'int' object is not iterable錯(cuò)誤,所以本文給大家介紹了Python中TypeError: int object is not iterable錯(cuò)誤分析及解決辦法
    2024-08-08
  • python3 hdf5文件 遍歷代碼

    python3 hdf5文件 遍歷代碼

    這篇文章主要介紹了python3 hdf5文件 遍歷代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python 全局變量的import機(jī)制介紹

    python 全局變量的import機(jī)制介紹

    在之前學(xué)習(xí)python設(shè)計(jì)模式(工廠模式實(shí)踐篇),希望使用全局變量代替c++的宏完成服務(wù)自動(dòng)注冊(cè)功能時(shí),遇到過(guò)一個(gè)問(wèn)題,全局變量的定義和使用放在同一個(gè)可執(zhí)行腳本中的問(wèn)題
    2017-09-09
  • python游戲地圖最短路徑求解

    python游戲地圖最短路徑求解

    這篇文章主要為大家詳細(xì)介紹了python游戲地圖最短路徑的求解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Python生成器常見(jiàn)問(wèn)題及解決方案

    Python生成器常見(jiàn)問(wèn)題及解決方案

    這篇文章主要介紹了Python生成器常見(jiàn)問(wèn)題及解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論