溫馨提示×

溫馨提示×

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

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

python3結合openpyxl庫實現excel操作的實例代碼

發布時間:2020-08-25 13:38:29 來源:腳本之家 閱讀:321 作者:xugexuge 欄目:開發技術

一.相關說明:

1、openpyxl(可讀寫excel表)專門處理Excel2007及以上版本產生的xlsx文件;2007一下的版本為xls結尾的文件,需要使用 xlrd和xlwt庫進行操作
2、excel表的文字編碼如果是“gb2312” 讀取后就會顯示亂碼,請先轉成Unicode

3、workbook: 工作簿,一個excel文件包含多個sheet。

4、sheet:工作表,一個workbook有多個,表名識別,如“sheet1”,“sheet2”等。

5、cell: 單元格,存儲數據對象

二.openpyxl的使用方法

1. 新建

import openpyxl
# 新建一個空excel,表名為sheet,文件名為test
wb = openpyxl.Workbook() # 創建新的excel文件,一個工作簿(workbook)在創建的時候同時至少也新建了一張工作表(worksheet)
wb.save('test.xlsx')

2.表操作

注:從此操作往后都使用如下的測試數據

import openpyxl
import openpyxl.styles
# 打開已有的excel
wb = openpyxl.load_workbook("test.xlsx")
# ------------------ 表操作 ------------------
# 新建sheet表
wb.create_sheet(index=2, title="sheet3") # 可通過index控制創建的表的位置
# 獲取所有表名
sheet_names = wb.sheetnames # 得到工作簿的所有工作表名 結果: ['Sheet1', 'Sheet2', 'Sheet3']
# 根據表名刪除sheet表
wb.remove(wb[sheet_names[2]]) # 刪除上一步建的第3個工作表
# 根據表名打開sheet表
sheet1 = wb[sheet_names[0]] # 打開第一個 sheet 工作表

3.讀取數據

# ------------------ 讀取數據 ------------------
# 獲取單元格數據
sheet1_max_colum = sheet1.max_column # 獲取最大列數 結果:3
# ws = wb.active # 獲取當前活動的sheet頁
sheet1_max_row = sheet1.max_row # 獲取最大行數 結果:10
A1_value = sheet1['A1'].value # 獲取單元格A1值 結果:a1
A1_column = sheet1['A1'].column # 獲取單元格A1列值 結果: A
A1_row = sheet1['A1'].row  # 獲取單元格A1行號 結果: 1
A1 = sheet1.cell(row=1, column=1).value # 獲取第一行第一列的單元格值 結果:a1
# 獲取C列的所有數據
list_sheet1_column_C = []
for i in sheet1["C"]:
  list_sheet1_column_C.append(i.value)
# 獲取第1行的所有數據
list_sheet1_row_1 = []
for i in sheet1[1]:
  list_sheet1_row_1.append(i.value)
# 讀取所有數據
list_sheet1_all = []
for row in sheet1.rows:
  for cell in row:
    list_sheet1_all.append(cell.value) # 按行循環獲取所有的值,保存在 list_sheet1_all 列表中

4.寫入數據

# ------------------ 寫入數據 ------------------
sheet1.cell(row=1, column=2, value="B1") # 修改第一行第二列的單元格的值為B1
sheet1["A1"] = "A1" # 直接修改A1單元格的值為A1
sheet1["B11"] = "B11" # 新增B11單元格的值為B11
sheet1.title = "test_sheet" # 修改sheet1的表名為test_sheet

5.表格樣式調整

# ------------------ 表格樣式調整 ------------------
# 表格樣式支持:字體、顏色、模式、邊框、數字格式等
# A1單元格 等線24號加粗斜體,字體顏色淺藍色
sheet1["B11"].font = openpyxl.styles.Font(name="宋體", size=24, italic=True, color="00CCFF", bold=True)
# B1單元格 水平上下居中
sheet1["B11"].alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center")
# 第一行高度設置為30
sheet1.row_dimensions[1].height = 30
# C列的寬度設置為35
sheet1.column_dimensions["C"].width = 35

6.保存文件

# 保存文件,注意文件打開時文件保存會出錯
wb.save("test.xlsx")

補充:下面通過實例代碼看下python3 openpyxl基本操作,具體代碼如下所示:

#coding:utf-8
import xlrd
import xlwt
# 讀寫2007 excel
import openpyxl
import sys
#讀取設備sn
# def readSN(path):
#   wb = openpyxl.load_workbook(path)
#   sheet = wb.active
#   dict = []
#   for i in range(2, sheet.max_row +1):
#     c = sheet["C" + str(i)].value;
#     d = sheet["D" + str(i)].value;
#
#     dict.append(d)
#     #dict.append(d)
#     #print(c,d)
#   return dict;
#
#   pass;
# print(readSN("./sim/1.xlsx"))
def read07Excel(path,path2):
  wb = openpyxl.load_workbook(path)
  sheet = wb.active
  # print(sheet.max_column) # 獲取最大列數
  # print(sheet.max_row) # 獲取最大行數
  #print(sheet['B1'].value)
  wb1 = openpyxl.load_workbook(path2)
  sheet1 = wb1.active
  for i in range(2,sheet.max_row):
    iccid = sheet["B"+str(i)].value;
    len_iccid = len(iccid)
    if len_iccid == 20 :
      sub_iccid = iccid[16:-1]
    elif len_iccid == 21:
      sub_iccid = iccid[17:-1]
    for x in range(1,sheet1.max_row):
      #print(sheet1["D"+str(x)].value)
      if sub_iccid+"N" == sheet1["D"+str(x)].value:
        sheet["O"+str(i)].value = sheet1["C"+str(x)].value;
        wb.save(filename=path)
        print(str(sheet1["D"+str(x)].value) + " "+ str(sheet1["C"+str(x)].value) +" "+ str(iccid))
        print()
      pass
    # 寫入數據
    # s =sheet["P"+str(i)].value = "dsdaf";
    # wb.save(filename=path)
    # p = sheet["P" + str(i)].value;
    #print(sub_iccid)
  # for row in sheet.rows:
  #   for cell in row:
  #     print(cell.value, "\t", end="")
  #     print(cell.column, "\t", end="")
  #
  #
  #   print()
  #   sys.exit()
# path = "./sim/2.xlsx"
# wb = openpyxl.load_workbook(path)
# #sheet = wb.sheetnames[0] #獲取名稱
# sheet = wb.active
# 分別返回
#print(sheet['A1'].value) #獲取單元格A1值
read07Excel("./sim/2.xlsx","./sim/1.xlsx")
# wb=openpyxl.load_workbook('./sim/1.xlsx') #打開excel文件
# print(wb.sheetnames) #獲取工作簿所有工作表名

總結

以上所述是小編給大家介紹的python3結合openpyxl庫實現excel操作,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女