python3--excel的處理(xlrd、openpyxl)


1、安裝模塊;

     pip install xlrd                # xlrd模塊既可以處理2003版本之前的excel表格 xls,也可以處理新版本表格 xlsx; 但是 只能讀取數

     pip install openpyxl       # openpyxl可以讀,可以寫,但是不支持老版本的excel文檔;

2、表單處理  ---  讀數據 (xlrd模塊);

前置條件:

                         import xlrd

                         book = xlrd.open_workbook("income.xlsx")

                         sheet = book.sheet_by_index(0)   

操作文件截圖:

文檔操作:

獲取所有sheet名稱:                              book.sheet_names()

獲取所有sheet數量:                              book.nsheets ,如: print(book.nsheets)
通過sheet索引獲取表單 :                     sheet = book.sheet_by_index(0)               # 獲取到需要的 表單對象;
通過sheet名稱獲取表單 :                     sheet = book.sheet_by_name("2018")     # 獲取到需要的 表單對象;

表格操作:

3.1、獲取表單名稱:print(sheet.name)

3.2、獲取表單索引:print(sheet.number)

3.3、獲取表單行數:print(sheet.nrows)

3.4、獲取表單列數:print(sheet.ncols)

3.5、獲取A1表格數據:print(sheet.cell_value(rowx=0,colx=0))    # 默認是浮點數;  可以加 "int" 得到整數:int(sheet.cell_value(rowx=0,colx=0))

3.6、獲取一整行數據: print(sheet.row_values(rowx=0))

3.7、獲取第一行的第二列及以后的數據:print(sheet.row_values(rowx=0,start_colx=1,end_colx=None))  ;  # None參數可以省略,變成:sheet.row_values(rowx=0,start_colx=1)

3.8、獲取一張列數據: print(sheet.col_values(colx=1))

3.9、獲取第2列的第2行到第11行數據:print(sheet.col_values(colx=1,start_rowx=1,end_rowx=10))

3.10、計算表格“2017”中數字的和:

                     sheet = book.sheet_by_name("2017")
incomes = sheet.col_values(colx=1,start_rowx=1)
print("2017年收入為:{}".format(int(sum(incomes))))

3、表單處理  ---  寫數據(openpyxl);

前置條件:

                         import openpyxl

 

# 創建一個 excelworkbook對象;

                         book = book = openpyxl.Workbook()    

# 創建時,會自動產生一個sheet,通過actcive獲取到這個 表單(sheet);

                         sheet = book.active

# 修改當前 sheet 標題為  省份;

      sheet.title = "省份"

# 保存文檔;--每次操作完成后一定要保存

      book.save("中國.xlsx")

# 增加一個名為 “四川省” 的sheet,放在最后;

      sheet1 = book.create_sheet("四川省--最后")

# 增加一個名為 “北京市” 的sheet,放在最前面;

      sheet2 = book.create_sheet("北京市--最前",0)

# 增加一個名為 “廣東省” 的sheet,放在第二個位置;

      sheet3 = book.create_sheet("廣東省",1)

根據以上操作得到結果如下:

  

 

# 根據 表單名稱 獲取某個 sheet 對象;

      sheet = book["省份"]

# 給第一個單元格寫入數據;

      sheet["A1"] = "黑龍江省"

 # 獲取第一個單元格的內容;

      print(sheet["A1"].value)

# 給任意一個單元格賦值;

      sheet.cell(2,2,value = "山東省")    ,  等價后面這個寫法:sheet.cell(3,3).value = "山東省2"

命令中表示單元格的數字參數是從 1 開始計數(xlrd是從 0 開始計數)

4、表單處理  ---  數據修改(openpyxl);

import openpyxl
4.1、修改目標單元格數據;

# 加載 excel文件;
      book = openpyxl.load_workbook("中國.xlsx")
# 獲取 表對象;
      sheet = book["省份"]
# 修改目標單元格的數據;
      sheet["A1"] = "修改省份"
# 保存修改后的數據;
      book.save("中國-1.xlsx") ,可以和原來名稱相同,覆蓋原文件,也可以另存為一個新文件;
得到結果如下:

4.2、插入、刪除行列;
# 在第2行的位置插入、刪除1行;
      sheet.insert_rows(2) ; 等價於(插入一行時第二個參數可以省略) :
sheet.insert_rows(2,1)
      sheet.delete_rows(2) ; 等價於(刪除一行時第二個參數可以省略) : sheet.delete_rows(2,1)
# 在第3行的位置插入、刪除5行;
      
sheet.insert_rows(3,5);
      sheet.delete_rows(3,5);
# 在第2列的位置插入、刪除1列;
      sheet.insert_cols(2) ; 等價於(插入一列是第二個參數可以省略) : sheet.insert_cols(2,1)
      sheet.delete_cols(2) ; 等價於(插入一列是第二個參數可以省略) : sheet.delete_cols(2,1)
# 在第2列的位置插入、刪除5列;
      sheet.insert_cols(3,5);
      sheet.delete_cols(3,5)
4.3、文字顏色、字體、大小;
import openpyxl
# 導入 Font對象 和 colors 顏色常量;
from openpyxl.styles import Font,colors
# 加載 excel文件;
      book = openpyxl.load_workbook("中國.xlsx")
      sheet = book["省份"]
# 設置單元格字體;
      sheet["A1"].font = Font(color = colors.RED, # 設置字體為紅色;
                    size = 15, # 設置字體大小;
                    bold = True,      # 設置字體為粗體;
                    italic = True,     # 設置字體為斜體;
                    )
# 也可以使用RGB數字表示字體顏色;
      sheet["A1"].font = Font(color = "981818")

# 設置整行 字體風格, 指定第5行;
      font == Font(color = "981818")
      for x in range(1,10): # 設置第 1 到 10 列;
        sheet.cell(row=5,column=x).font = font
# 設置整列 字體風格, 指定第5列;
      font = Font(bold = True)
      for x in range(1,10): # 設置第 1 到 10 行;
        sheet.cell(row=x, column = 5).font = font
# 保存設置;
      book.save("中國-1.xlsx") ,可以和原來名稱相同,覆蓋原文件,也可以另存為一個新文件;
4.4、單元格背景色;
import openpyxl
# 導入 Font對象 和 colors 顏色常量;
from openpyxl.styles import patternfill
# 加載 excel文件;
      book = openpyxl.load_workbook("中國.xlsx")
      sheet = book["省份"]
# 設置某個單元格背景色;
      sheet["A1"].fill = Patternfill("solid","E39191")

# 設置整行背景色, 指定第6行;
      fill = PatternFill("solid","E39191")
      for x in range(1,10): #設置第 1 到 10列;
        sheet.cell(row=6,column=x).fill = fill
# 保存設置;
      book.save("中國-1.xlsx") ,可以和原來名稱相同,覆蓋原文件,也可以另存為一個新文件;
4.5、插入圖片;
import openpyxl
# 導入 Font對象 和 colors 顏色常量;
from openpyxl.drawing import Image
# 加載 excel文件;
      book = openpyxl.load_workbook("中國.xlsx")
      sheet = book["省份"]
# 在第2行,第3列 的位置插入圖片;
      sheet.add_image(Image("pic.png"),"C2")
# 保存設置;
      book.save("中國-1.xlsx") ,可以和原來名稱相同,覆蓋原文件,也可以另存為一個新文件;



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM