iT邦幫忙

1

查找資料夾中的EXCEL文件中的特定儲存格的值是不是0,如果是就將XECEL文件名填入另外一份EXCEL中

  • 分享至 

  • xImage

已經解決

import os
import openpyxl
from openpyxl.utils import column_index_from_string

# 創建一個新的 Excel 文件
output_workbook = openpyxl.Workbook()
output_sheet = output_workbook.active

# 蒐索當前目錄中的所有 Excel 文件
path='D:/python/測試資料夾'
for file_name in os.listdir(path):
    if file_name.endswith('.xlsx'):
        # 加載工作簿
        wb = openpyxl.load_workbook(filename=path+"/"+file_name)
        # 獲取最後一個工作表
        ws = wb.worksheets[-1]
        # 循環搜索包含“保留款”且值為 0 的行
 #       for row in ws.iter_rows(min_row=1, max_row=ws.max_row, min_col=1, max_col=ws.max_column):
 #          for cell in row:
 #               if cell.value == '保留款':
 #                   next_cell = row[column_index_from_string(cell.column) + 1]
 #                   if next_cell.value == 0:
 #                       # 文件名被寫入輸出工作表
 #                       output_sheet.append([file_name])
 #                       break
        for index,row in enumerate(ws.iter_rows(min_row=1, max_row=ws.max_row, min_col=1, max_col=ws.max_column)):
            for cell in row:                                
                if cell.value == '保  留  款':                   
                    next_cell = row[10]
                    if next_cell.value != 0:
                        # 文件名被寫入輸出工作表
                        print(file_name)
                        output_sheet.append([file_name])
                        break
# 將結果保存到 Excel 文件中
output_workbook.save(path+"/"+'output.xlsx')
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
JamesDoge
iT邦高手 1 級 ‧ 2023-02-23 13:14:03
最佳解答
import os
import openpyxl

# 創建新的 Excel 文件
output_workbook = openpyxl.Workbook()
output_worksheet = output_workbook.active

# 設置要查找的單元格坐標(假設為 A1)
cell_coordinate = 'A1'

# 在當前目錄中查找所有 Excel 文件
for filename in os.listdir('.'):
    if filename.endswith('.xlsx'):
        # 打開 Excel 文件
        workbook = openpyxl.load_workbook(filename)

        # 選擇工作表
        worksheet = workbook['Sheet1']

        # 查找保留款欄位所在的行
        for row in worksheet.iter_rows():
            for cell in row:
                if cell.value == '保留款':
                    row_num = cell.row
                    break

        # 查找指定單元格的值是否為 0
        cell = worksheet.cell(row=row_num, column=2) # 在保留款欄位旁的欄位中查找
        if cell.value == 0:
            # 將文件名寫入輸出工作表
            output_worksheet.append([filename])

# 保存輸出工作簿
output_workbook.save('output.xlsx')
agout2004 iT邦新手 4 級 ‧ 2023-02-23 13:59:46 檢舉

可是我輸出都是空白的~~哈哈哈

agout2004 iT邦新手 4 級 ‧ 2023-02-23 14:03:46 檢舉

問題已經更新~麻煩大大指導

2
alien663
iT邦研究生 3 級 ‧ 2023-02-23 16:21:19
  1. open excel_0
  2. open excel_1
  3. keep住excel_0的檔案名稱
  4. 找出excel_1特定欄位數值(when data["材料名稱"] == "實付金額")
  5. 第4步驟數值如果是零,將第2步驟的檔案名稱寫入excel_0
  6. 關閉excel_1
  7. 結束迴圈(接著換excel_2)
  8. 如果迴圈結束,關閉excel_0
1
rain_yu
iT邦研究生 5 級 ‧ 2023-02-24 08:25:50

想問一下這是用甚麼語言寫得,
我Excel只會用VBA寫,
一、紀錄保留款列位置
二、找出要判斷=0的欄位置。
if cells(row,col) = 0 then
輸出
end if
我看到保留款那一列,要判斷是否為0的欄位是在"金額"欄位底下,
算下來應該是第五欄。應該是cells(row,5)
然後可以試試看
cell = worksheet.cell(row=row_num, column=2)
if cell.value == 0:
改成
worksheet.cell(row, 5) ==0,
然後VBA放變數的話,
row=row_num,column=2 提出來
cell = worksheet.cell(row, col)

最後就是看能不能下停止點,去debug。

if cell.value == 0:
# 將文件名寫入輸出工作表
output_worksheet.append([filename])
這列是不是確實有抓到數據。
或是cell = worksheet.cell(row=row_num, column=2)
row是否有沒有數字。
小弟才疏學淺,希望能提供不同思路給你

agout2004 iT邦新手 4 級 ‧ 2023-02-24 08:34:45 檢舉

python

我要發表回答

立即登入回答