iT邦幫忙

1

python excel 問題3

  • 分享至 

  • xImage

各大大好!不好意思,今天又再發問python excel問題!!/images/emoticon/emoticon04.gif

data.xlsx是學生成績單:
分別是學號、國文、英文、數學、理化成績的分數
照片如下:
https://ithelp.ithome.com.tw/upload/images/20231216/201459928hRJMJ9tsi.png

data2.xlsx是學生成績單:
分別是學號、國文、英文、數學、理化成績的分數
照片如下:
https://ithelp.ithome.com.tw/upload/images/20231216/20145992wuOowZzqfz.png

import openpyxl
import pandas as pd
import numpy as np

# 讀取第一個 Excel 檔案
wb1 = openpyxl.load_workbook('data.xlsx')
sheet1 = wb1['sheet2']

# 讀取第二個 Excel 檔案
wb2 = openpyxl.load_workbook('data2.xlsx')
sheet2 = wb2['sheet2']

# 提取兩個工作表的最大行和最大列
max_row = max(sheet1.max_row, sheet2.max_row)
max_column = max(sheet1.max_column, sheet2.max_column)

print("max_row=", max_row, end='\n')
print("max_column=", max_column, end='\n')

# 創建新的工作簿
wb3 = openpyxl.Workbook()
sheet3 = wb3.active

a1 = []
a2 = []

start = 1
end = 5
step = 5

while start <= max_row:
    for i in range(start, min(end + 1, max_row + 1)):
        for j in range(1, max_column + 1):
            cell_A = sheet1.cell(i, j)
            cell_B = sheet2.cell(i, j)

            # 判斷不同的值
            if (cell_A.value != cell_B.value):
                # 將要填入的資料放入 list
                a1 = ["第1個檔案不同值的第{0}列={1}".format(i, cell_A.value)]
                a2 = ["第2個檔案不同值的第{0}列={1}".format(i, cell_B.value)]

                sheet3.append(a1)
                sheet3.append(a2)

               

    start += step
    end += step

# 儲存新的 Excel 檔案
wb3.save('data3.xlsx')

執行結果玩完後,打開data3.xlsx內容,照片如下:
https://ithelp.ithome.com.tw/upload/images/20231217/201459924f6wvCyPoe.png

理想的data3.xlsx檔案內容,照片如下:
https://ithelp.ithome.com.tw/upload/images/20231217/20145992ccmReS21j8.png

sheet3.append(a1)和sheet3.append(a2)這段填入data3.xlsx時,
方向是垂直的,有辦法改成橫向方式填入data3.xlsx檔嗎?
我該用python的pandas和numpy模組改寫嗎?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
alien663
iT邦研究生 3 級 ‧ 2023-12-18 07:45:18

我是把Excel相關的處理寫成Library,直接呼叫就可以用了,用法請參照test

My Github

謝謝您的寶貴建議

我要發表回答

立即登入回答