91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Python讀取和修改Excel文件

發布時間:2021-11-29 09:08:48 來源:億速云 閱讀:265 作者:柒染 欄目:開發技術

這篇文章給大家介紹如何使用Python讀取和修改Excel文件,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

    1、使用xlrd模塊對xls文件進行讀操作

    假設我們的表如下,是一個“農村居民家庭人均純收入和農村居民家庭人均消費情況”的表格。后綴為.xls。里面包含兩個工作表,“各省市”和“測試表”。

    提一下,一個Excel文件,就相當于一個“工作簿”(workbook),一個“工作簿”里面可以包含多個“工作表(sheet)”

    如何使用Python讀取和修改Excel文件

    1.1 獲取工作簿對象

    引入模塊,獲得工作簿對象。

     import xlrd  #引入模塊
     
    #打開文件,獲取excel文件的workbook(工作簿)對象
    workbook=xlrd.open_workbook("DataSource/Economics.xls")  #文件路徑

    1.2 獲取工作表對象

    我們知道一個工作簿里面可以含有多個工作表,當我們獲取“工作簿對象”后,可以接著來獲取工作表對象,可以通過“索引”的方式獲得,也可以通過“表名”的方式獲得。

    '''對workbook對象進行操作'''
     
    #獲取所有sheet的名字
    names=workbook.sheet_names()
    print(names) #['各省市', '測試表']  輸出所有的表名,以列表的形式
     
    #通過sheet索引獲得sheet對象
    worksheet=workbook.sheet_by_index(0)
    print(worksheet)  #<xlrd.sheet.Sheet object at 0x000001B98D99CFD0>
     
    #通過sheet名獲得sheet對象
    worksheet=workbook.sheet_by_name("各省市")
    print(worksheet) #<xlrd.sheet.Sheet object at 0x000001B98D99CFD0>
     
    #由上可知,workbook.sheet_names() 返回一個list對象,可以對這個list對象進行操作
    sheet0_name=workbook.sheet_names()[0]  #通過sheet索引獲取sheet名稱
    print(sheet0_name)  #各省市

    1.3 獲取工作表的基本信息

    在獲得“表對象”之后,我們可以獲取關于工作表的基本信息。包括表名、行數與列數。

    '''對sheet對象進行操作'''
    name=worksheet.name  #獲取表的姓名
    print(name) #各省市
     
    nrows=worksheet.nrows  #獲取該表總行數
    print(nrows)  #32
     
    ncols=worksheet.ncols  #獲取該表總列數
    print(ncols) #13

    1.4 按行或列方式獲得工作表的數據

    有了行數和列數,循環打印出表的全部內容也變得輕而易舉。

    for i in range(nrows): #循環打印每一行
        print(worksheet.row_values(i))  #以列表形式讀出,列表中的每一項是str類型
    #['各省市', '工資性收入', '家庭經營純收入', '財產性收入', ………………]
    #['北京市', '5047.4', '1957.1', '678.8', '592.2', '1879.0,…………]
     
    col_data=worksheet.col_values(0)  #獲取第一列的內容
    print(col_data)

    1.5 獲取某一個單元格的數據

     我們還可以將查詢精確地定位到某一個單元格。

    在xlrd模塊中,工作表的行和列都是從0開始計數的。

    #通過坐標讀取表格中的數據
    cell_value1=sheet0.cell_value(0,0)
    cell_value2=sheet0.cell_value(1,0)
    print(cell_value1)  #各省市
    print(cell_value2)   #北京市
     
    cell_value1=sheet0.cell(0,0).value
    print(cell_value1) #各省市
    cell_value1=sheet0.row(0)[0].value
    print(cell_value1)  #各省市

    2、使用xlwt模塊對xls文件進行寫操作

    2.1 創建工作簿

     # 導入xlwt模塊
    import xlwt
     
    #創建一個Workbook對象,相當于創建了一個Excel文件
    book=xlwt.Workbook(encoding="utf-8",style_compression=0)
     
    '''
    Workbook類初始化時有encoding和style_compression參數
    encoding:設置字符編碼,一般要這樣設置:w = Workbook(encoding='utf-8'),就可以在excel中輸出中文了。默認是ascii。
    style_compression:表示是否壓縮,不常用。
    '''

    2.2 創建工作表

    創建完工作簿之后,可以在相應的工作簿中,創建工作表。

     # 創建一個sheet對象,一個sheet對象對應Excel文件中的一張表格。
    sheet = book.add_sheet('test01', cell_overwrite_ok=True)
    # 其中的test是這張表的名字,cell_overwrite_ok,表示是否可以覆蓋單元格,其實是Worksheet實例化的一個參數,默認值是False

    2.3 按單元格的方式向工作表中添加數據

     # 向表test中添加數據
    sheet.write(0, 0, '各省市')  # 其中的'0-行, 0-列'指定表中的單元,'各省市'是向該單元寫入的內容
    sheet.write(0, 1, '工資性收入')
     
    #也可以這樣添加數據
    txt1 = '北京市'
    sheet.write(1,0, txt1)  
    txt2 = 5047.4
    sheet.write(1, 1, txt2)

     最后被文件被保存之后,上文語句形成的“工作表”如下所示:

    如何使用Python讀取和修改Excel文件

    2.4 按行或列方式向工作表中添加數據

    為了驗證這個功能,我們在工作簿中,再創建一個工作表,上個工作表叫“test01”,那么這個工作表命名為“test02”,都隸屬于同一個工作簿。在下面代碼中test02是表名,sheet2才是可供操作的工作表對象。

     #添加第二個表
    sheet2=book.add_sheet("test02",cell_overwrite_ok=True)
     
     
    Province=['北京市', '天津市', '河北省', '山西省', '內蒙古自治區', '遼寧省',
              '吉林省', '黑龍江省', '上海市', '江蘇省', '浙江省', '安徽省', '福建省',
              '江西省', '山東省', '河南省', '湖北省', '湖南省', '廣東省', '廣西壯族自治區',
              '海南省', '重慶市', '四川省', '貴州省', '云南省', '西藏自治區', '陜西省', '甘肅省',
              '青海省', '寧夏回族自治區', '新疆維吾爾自治區']
     
    Income=['5047.4', '3247.9', '1514.7', '1374.3', '590.7', '1499.5', '605.1', '654.9',
            '6686.0', '3104.8', '3575.1', '1184.1', '1855.5', '1441.3', '1671.5', '1022.7',
            '1199.2', '1449.6', '2906.2', '972.3', '555.7', '1309.9', '1219.5', '715.5', '441.8',
            '568.4', '848.3', '637.4', '653.3', '823.1', '254.1']
     
    Project=['各省市', '工資性收入', '家庭經營純收入', '財產性收入', '轉移性收入', '食品', '衣著',
             '居住', '家庭設備及服務', '交通和通訊', '文教、娛樂用品及服務', '醫療保健', '其他商品及服務']
     
    #填入第一列
    for i in range(0, len(Province)):
        sheet2.write(i+1, 0, Province[i])
     
    #填入第二列
    for i in range(0,len(Income)):
        sheet2.write(i+1,1,Income[i])
     
    #填入第一行
    for i in range(0,len(Project)):
        sheet2.write(0,i,Project[i])

    2.5 保存創建的文件

    最后保存在特定路徑即可。

    # 最后,將以上操作保存到指定的Excel文件中
    book.save('DataSource\\test1.xls')

    執行出來的工作表test02如下所示:

    如何使用Python讀取和修改Excel文件

    3、使用openpyxl模塊對xlsx文件進行讀操作

    上面兩個模塊,xlrd和xlwt都是針對Excel97-2003操作的,也就是以xls結尾的文件。很顯然現在基本上都是Excel2007以上的版本,以xlsx為后綴。要對這種類型的Excel文件進行操作要使用openpyxl,該模塊既可以進行“讀”操作,也可以進行“寫”操作,還可以對已經存在的文件做修改。

    3.1 獲取工作簿對象

    import openpyxl
     
    #獲取 工作簿對象
    workbook=openpyxl.load_workbook("DataSource\Economics.xlsx")
    #與xlrd 模塊的區別
    #wokrbook=xlrd.open_workbook(""DataSource\Economics.xls)

    3.2 獲取所有工作表名

    #獲取工作簿 workbook的所有工作表
    shenames=workbook.get_sheet_names()
    print(shenames)  #['各省市', '測試表']
    #在xlrd模塊中為 sheetnames=workbook.sheet_names()
     
    #使用上述語句會發出警告:DeprecationWarning: Call to deprecated function get_sheet_names (Use wb.sheetnames).
    #說明 get_sheet_names已經被棄用 可以改用 wb.sheetnames 方法
    shenames=workbook.sheetnames
    print(shenames)  #['各省市', '測試表']

    3.3 獲取工作表對象

    上一小節獲取的工作表名,可以被應用在這一節中,用來獲取工作表對象。

    #獲得工作簿的表名后,就可以獲得表對象
    worksheet=workbook.get_sheet_by_name("各省市")
    print(worksheet)  #<Worksheet "各省市">
     
    #使用上述語句同樣彈出警告:DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).
    #改寫成如下格式
    worksheet=workbook["各省市"]
    print(worksheet)  #<Worksheet "各省市">
     
    #還可以通過如下寫法獲得表對象
    worksheet1=workbook[shenames[1]]
    print(worksheet1)  #<Worksheet "測試表">

    3.4 根據索引方式獲取工作表對象

    上一小節獲取工作表對象的方式,實際上是通過“表名”來獲取,我們可以通過更方便的方式,即通過“索引”方式獲取工作表對象。 

    #還可以通過索引方式獲取表對象
    worksheet=workbook.worksheets[0]
    print(worksheet) #<Worksheet "各省市">
     
    #也可以用如下方式
    #獲取當前活躍的worksheet,默認就是第一個worksheet
    ws = workbook.active

    3.5 獲取工作表的屬性

    得到工作表對象后,可以獲取工作表的相應屬性,包括“表名”、“行數”、“列數”

    #經過上述操作,我們已經獲得了第一個“表”的“表對象“,接下來可以對表對象進行操作
     
    name=worksheet.title  #獲取表名
    print(name)  #各省市
    #在xlrd中為worksheet.name
     
    #獲取該表相應的行數和列數
    rows=worksheet.max_row
    columns=worksheet.max_column
    print(rows,columns)  #32 13
    #在xlrd中為 worksheet.nrows  worksheet.ncols

    3.6 按行或列方式獲取表中的數據

    要想以行方式或者列方式,獲取整個工作表的內容,我們需要使用到以下兩個生成器:

    sheet.rows,這是一個生成器,里面是每一行數據,每一行數據由一個元組類型包裹。

    sheet.columns,同上,里面是每一列數據。

    for row in worksheet.rows:
        for cell in row:
            print(cell.value,end=" ")
        print()
    """
    各省市 工資性收入 家庭經營純收入 財產性收入 轉移性收入 食品 衣著 居住 家庭設備及服務 ……
    北京市 5047.4 1957.1 678.8 592.2 1879.0 451.6 859.4 303.5 698.1 844.1 575.8 113.1 ……
    天津市 3247.9 2707.4 126.4 146.3 1212.6 265.3 664.4 122.4 441.3 315.6 263.2 56.1 ……
    ……
    """
     
    for col in worksheet.columns:
        for cell in col:
            print(cell.value,end=" ")
        print()
     
    '''
    各省市 北京市 天津市 河北省 山西省 內蒙古自治區 遼寧省 吉林省 黑龍江省 上海市 江蘇省 浙江省 ……
    工資性收入 5047.4 3247.9 1514.7 1374.3 590.7 1499.5 605.1 654.9 6686.0 3104.8 3575.1 ……
    家庭經營純收入 1957.1 2707.4 2039.6 1622.9 2406.2 2210.8 2556.7 2521.5 767.7 2271.4  ……
    ……
    '''

    我們可以通過查看sheet.rows 里面的具體格式,來更好的理解代碼

     for row in worksheet.rows:
        print(row)
    '''
    (<Cell '各省市'.A1>, <Cell '各省市'.B1>, <Cell '各省市'.C1>, <Cell '各省市'.D1>, <Cell '各省市'.E1>,……
    (<Cell '各省市'.A2>, <Cell '各省市'.B2>, <Cell '各省市'.C2>, <Cell '各省市'.D2>, <Cell '各省市'.E2>, ……
    ……
    '''
    #可知,需要二次迭代
     
    for row in worksheet.rows:
        for cell in row:
            print(cell,end=" ")
        print()
     
    '''
    <Cell '各省市'.A1> <Cell '各省市'.B1> <Cell '各省市'.C1> <Cell '各省市'.D1>……
    <Cell '各省市'.A2> <Cell '各省市'.B2> <Cell '各省市'.C2> <Cell '各省市'.D2> ……
    ……
    '''
    #還需要cell.value
    for row in worksheet.rows:
        for cell in row:
            print(cell.value,end=" ")
        print()

    3.7 獲取特定行或特定列的數據

    上述方法可以迭代輸出表的所有內容,但是如果要獲取特定的行或列的內容呢?我們可以想到的是用“索引”的方式,但是sheet.rows是生成器類型,不能使用索引。所以我們將其轉換為list之后再使用索引,例如用list(sheet.rows)[3]來獲取第四行的tuple對象。

    #輸出特定的行
    for cell in list(worksheet.rows)[3]:  #獲取第四行的數據
        print(cell.value,end=" ")
    print()
    #河北省 1514.7 2039.6 107.7 139.8 915.5 167.9 531.7 115.8 285.7 265.4 166.3 47.0
     
    #輸出特定的列
    for cell in list(worksheet.columns)[2]:  #獲取第三列的數據
        print(cell.value,end=" ")
    print()
    #家庭經營純收入 1957.1 2707.4 2039.6 1622.9 2406.2 2210.8 2556.7 2521.5 767.7 2271.4 3084.3……
     
    #已經轉換成list類型,自然是從0開始計數。

    3.8 獲取某一塊的數據

    有時候我們并不需要一整行或一整列內容,那么可以通過如下方式獲取其中一小塊的內容。

    注意兩種方式的區別,在第一種方式中,由于生成器被轉換成了列表的形式,所以索引是從0開始計數的。

    而第二種方式,行和列都是從1開始計數,這是和xlrd模塊中最大的不同,在xlrd中行和列都是從0計數的,openpyxl之所這么做是為了和Excel表統一,因為在Excel表,就是從1開始計數。

    for rows in list(worksheet.rows)[0:3]:
        for cell in rows[0:3]:
            print(cell.value,end=" ")
        print()
    '''
    各省市 工資性收入 家庭經營純收入 
    北京市 5047.4 1957.1 
    天津市 3247.9 2707.4 
    '''
     
    for i in range(1, 4):
        for j in range(1, 4):
            print(worksheet.cell(row=i, column=j).value,end=" ")
        print()
    '''
    各省市 工資性收入 家庭經營純收入 
    北京市 5047.4 1957.1 
    天津市 3247.9 2707.4 
    '''

    3.9 獲取某一單元格的數據

    有兩種方式。

    #精確讀取表格中的某一單元格
    content_A1= worksheet['A1'].value
    print(content_A1)
     
    content_A1=worksheet.cell(row=1,column=1).value
    #等同于 content_A1=worksheet.cell(1,1).value
    print(content_A1)
    #此處的行數和列數都是從1開始計數的,而在xlrd中是由0開始計數的

    4、使用openpyxl模塊對xlsx文件進行寫操作

    4.1 創建工作簿和獲取工作表

    同樣的workbook=openpyxl.Workbook() 中“W”要大寫。

    import openpyxl
     
    # 創建一個Workbook對象,相當于創建了一個Excel文件
    workbook=openpyxl.Workbook()
    #wb=openpyxl.Workbook(encoding='UTF-8')
     
    #獲取當前活躍的worksheet,默認就是第一個worksheet
    worksheet = workbook.active
    worksheet.title="mysheet"

    4.2 創建新的工作表

    worksheet2 = workbook.create_sheet()   #默認插在工作簿末尾
    #worksheet2 = workbook.create_sheet(0)  #插入在工作簿的第一個位置
    worksheet2.title = "New Title"

    4.3 將數據寫入工作表

    #以下是我們要寫入的數據
    Province=['北京市', '天津市', '河北省', '山西省', '內蒙古自治區', '遼寧省',
              '吉林省', '黑龍江省', '上海市', '江蘇省', '浙江省', '安徽省', '福建省',
              '江西省', '山東省', '河南省', '湖北省', '湖南省', '廣東省', '廣西壯族自治區',
              '海南省', '重慶市', '四川省', '貴州省', '云南省', '西藏自治區', '陜西省', '甘肅省',
              '青海省', '寧夏回族自治區', '新疆維吾爾自治區']
     
    Income=['5047.4', '3247.9', '1514.7', '1374.3', '590.7', '1499.5', '605.1', '654.9',
            '6686.0', '3104.8', '3575.1', '1184.1', '1855.5', '1441.3', '1671.5', '1022.7',
            '1199.2', '1449.6', '2906.2', '972.3', '555.7', '1309.9', '1219.5', '715.5', '441.8',
            '568.4', '848.3', '637.4', '653.3', '823.1', '254.1']
     
    Project=['各省市', '工資性收入', '家庭經營純收入', '財產性收入', '轉移性收入', '食品', '衣著',
             '居住', '家庭設備及服務', '交通和通訊', '文教、娛樂用品及服務', '醫療保健', '其他商品及服務']
     
    #寫入第一行數據,行號和列號都從1開始計數
    for i in range(len(Project)):
        worksheet.cell(1, i+1,Project[i])
     
    #寫入第一列數據,因為第一行已經有數據了,i+2
    for i in range(len(Province)):
        worksheet.cell(i+2,1,Province[i])
     
    #寫入第二列數據
    for i in range(len(Income)):
        worksheet.cell(i+2,2,Income[i])

    4.4 保存工作簿

    workbook.save(filename='DataSource\\myfile.xlsx')

    最后運行結果如下所示:

    如何使用Python讀取和修改Excel文件

    5、修改已經存在的工作簿(表)

    5.1 插入一列數據

    將第四節中最后保存的myfile.xlsx作為我們要修改的表格,我們計劃在最前面插入一列“編號”,如下所示:

    import openpyxl
     
    workbook=openpyxl.load_workbook("DataSource\myfile.xlsx")
    worksheet=workbook.worksheets[0]
     
    #在第一列之前插入一列
    worksheet.insert_cols(1)  #
     
    for index,row in enumerate(worksheet.rows):
        if index==0:
            row[0].value="編號"  #每一行的一個row[0]就是第一列
        else:
            row[0].value=index
    #枚舉出來是tuple類型,從0開始計數
     
    workbook.save(filename="DataSource\myfile.xlsx")

    運行結果如下:

    如何使用Python讀取和修改Excel文件

    5.2 修改特定單元格

    worksheet.cell(2,3,'0')
    worksheet["B2"]="Peking"

    運行結果如下:

    如何使用Python讀取和修改Excel文件

    5.3 批量修改數據

    批量修改數據就相當于寫入,會自動覆蓋。在上一節中已經有介紹,不再贅述。

    還有sheet.append()方法,可以用來添加行。

    taiwan=[32,"臺灣省"]
    worksheet.append(taiwan)

    運行結果如下:

    如何使用Python讀取和修改Excel文件

    關于如何使用Python讀取和修改Excel文件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    普定县| 交口县| 舒兰市| 大渡口区| 五峰| 香格里拉县| 石河子市| 营口市| 新竹市| 博罗县| 界首市| 布尔津县| 双峰县| 阳城县| 珠海市| 洛扎县| 鹤岗市| 浦江县| 嘉鱼县| 潮安县| 涟源市| 纳雍县| 梅州市| 肃北| 天气| 玉门市| 若羌县| 昌都县| 北海市| 光山县| 海安县| 黔西| 天峨县| 广丰县| 临城县| 乌苏市| 新兴县| 台安县| 揭东县| 合阳县| 汤原县|