Python對 Excel 的常用操作


pip install openpyxl


幾個常用的對象

  • Workbook:工作簿,一個包含多個Sheet的Excel文件
  • Worksheet:工作表,一個Workbook有多個Worksheet,如“Sheet1”,“Sheet2”等
  • Cell:單元格,存儲具體的數據對象

導入包

#   導入的包在這里的用處
#   寫入時間
from datetime import datetime
#   創建workbook對象
from openpyxl import Workbook
#   加載指定的Excel文件
from openpyxl import load_workbook
#   設置單元格對齊樣式
from openpyxl.styles import Alignment
#   將數字轉換為列字母
from openpyxl.utils import get_column_letter

創建Workbook、Worksheet

#   創建Workbook對象
wb = Workbook()

#   獲取活動工作表
ws = wb.active

#   設置sheet的標題(默認為Sheet)
ws.title = 'my_sheet'

#   新建一個Sheet(后面沒有對這個sheet進行操作)
new_sheet = wb.create_sheet(title='new_sheet')

寫入數據

#   將數字轉換為列字母 27列為AA
print('52列的字母:', get_column_letter(52))

#   添加數據:一個單元格一個單元格的添加
#   六行五列
for row in range(1, 7):
    for col in range(1, 6):
        #   將當前單元格的列和行作為數據添加進去
        cell_temp = ws.cell(row=row, column=col, value='{}{}'.format(get_column_letter(col), row))
        #   設置單元格對齊方式:垂直居中
        cell_temp.alignment = Alignment(horizontal='center', vertical='center')

#   添加數據:一行一行的添加
ws.append([1, 2, 3, 4, 5])
ws.append((6, 7, 8, 9, 10))

# python類型將自動轉換
ws['A9'] = datetime.now()

#   最大行:max_row         最大列:max_column

#   統計總行:在數據A列最后一行的下面顯示總行
count_row_index = str(ws.max_row + 1)
ws['A' + count_row_index] = '總行:%d' % ws.max_row
# print('A' + count_row_index)  單元格:A10

#   統計總列:在數據第一行的最后一列后面顯示總列
#   方法一:利用cell,得到具體第幾行第幾列的單元格
# count_col_index = ws.max_column + 1
# ws.cell(1, count_col_index, value='總列(方法一):%d' % ws.max_column)
# print(count_col_index)    單元格:第1行第6列

#   方法二:將數字轉換為列字母
count_col_index = str(get_column_letter(ws.max_column + 1))
ws[count_col_index + '1'] = '總列(方法二):%d' % ws.max_column
# print(count_col_index + '1')  單元格:F1

保存

#    路徑
path = r'C:\Users\Hlzy\Desktop\test.xlsx'
#    保存
wb.save(path)



讀取execl

#   指定workbook
wb_read = load_workbook(path)
#   查看所有的sheet   sheetnames
print('所有的sheet:', wb_read.sheetnames)


#   只有一個sheet可以直接獲取活動工作表
operate_sheet = wb_read.active
#   有多個sheet,需要使用其它時,需要指定sheet
# operate_sheet = wb_read['my_sheet']


print('\n數據:')

#   從每行每列的單元格挨個讀取值
for row in range(1, operate_sheet.max_row + 1):
    for col in range(1, operate_sheet.max_column + 1):
        #   根據將當前行數和列數取出cell的值
        cell_value = operate_sheet.cell(row, col).value
        #   單元格的值不為空時,打印出來
        print(cell_value, end='\t') if cell_value else print(end='\t')
    #   換行
    print()

#   可以在操作完數據后保存為新文件、或者覆蓋舊文件
# operate_sheet['A1']='123'
# wb_read.save(path)
# wb_read.save(r'C:\Users\Hlzy\Desktop\test_new.xlsx')

效果

  • Excel中的數據


  • 打印的內容





免責聲明!

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



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