Python基礎之文件I/O-excel

文件I/O-excel

讀寫數據

  1. 安裝 openpyxl

        pip install openpyxl
    
  2. 打開文件

        from openpyxl import load_workbook
    
        from openpyxl.writer.excel import ExcelWriter
    
        try:
            workbook_ = load_workbook(u"data.xlsx")
            # 獲得表單名字
            sheetnames = workbook_.get_sheet_names()
    
            sheet = workbook_.get_sheet_by_name(sheetnames[0])
        except Exception as ex:
            print(ex)
    
    
  3. 獲取單元格

        # 獲取某個單元格的值,觀察excel發現也是先字母再數字的順序,即先列再行
        b4 = sheet['A4']  #A行4列
    
        # 除了用下標的方式獲得,還可以用cell函數, 換成數字,這個表示B4
        b4_too = sheet.cell(row=4, column=2)
        print(b4_too.value)
    
    
        for i in range(2):
            for j in range(5):
                print(sheet.cell(row=i+1, column=j+1).value,end=' ')
            print()
    
  4. 獲得最大行和最大列

        # 獲得最大列和最大行
        print(sheet.max_row)
        print(sheet.max_column)
    
  5. 獲取行和列

        sheet.rows爲生成器, 裏面是每一行的數據,每一行又由一個tuple包裹。
        sheet.columns類似,不過裏面是每個tuple是每一列的單元格。
    
        # 因爲按行,所以返回A1, B1, C1這樣的順序
        for row in sheet.rows:
            for cell in row:
                print(cell.value)
    
        # A1, A2, A3這樣的順序
        for column in sheet.columns:
            for cell in column:
                print(cell.value)
    

    上面的代碼就可以獲得所有單元格的數據。如果要獲得某行的數據呢?給其一個索引就行了,因爲sheet.rows是生成器類型,不能使用索引,轉換成list之後再使用索引,list(sheet.rows)[2]這樣就獲取到第三行的tuple對象。

        for cell in list(sheet.rows)[2]:
            print(cell.value)
    
  6. 切片獲取

    還可以像使用切片那樣使用。sheet[‘A1’:‘B3’]返回一個tuple,該元組內部還是元組,由每行的單元格構成一個元組。

        for row_cell in sheet['A1':'B3']:
            for cell in row_cell:
                print(cell)
    

寫入數據

  1. 完整案例

        from openpyxl import Workbook
    
        from openpyxl import load_workbook
    
        from openpyxl.writer.excel import ExcelWriter
    
        try:
    
            #     新建工作表
            wb=Workbook()
            # 新建一個工作表,可以指定索引,適當安排其在工作簿中的位置
            sheet=wb.create_sheet('Data', index=1)  # 被安排到第二個工作表,index=0就是第一個位置
    
            # 刪除某個工作表
            # wb.remove(wb)
            # del wb[sheet]
            # row = [1, 2, 3, 4, 5]
            # sheet.append(row)
            rows = [
                ['Number', 'data1', 'data2'],
                [2, 40],
                [3, 40, 25],
                [4, 50, 30],
                [5, 30, 10],
                [6, 25, 5],
                [7, 50, 10111],
            ]
            for row in rows:
                sheet.append(row)
            wb.save(r'新歌檢索失敗1477881109469.xlsx')
        except Exception as ex:
            print(ex)
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章