使用 Python 查找 Excel 单元格值 0
Using Python to find an Excel cell value 0
如果 A 列的单元格值为“优秀...”,我正在尝试在 Microsoft Excel 的 B 列中查找单元格值。代码错误,找不到单元格值
wb = Workbook()
xlfile = "ATVI.xlsx"
wb = load_workbook(xlfile)
for xws in wb.sheetnames:
worksheet = wb[xws]
for row in worksheet.iter_rows("A")
for cell in row:
#cell value you want
if cell.value == "Shares outstanding 5":
#change column number for any cell value you
print(ws.cell(row=cell.row, column=2).value)
代码确实可以更改 excel 文件数据 - 下面的示例示例,但是当我在原始数据中搜索特定单元格值时失败,该单元格值在每个 [=24= 的不同行中].在继续学习本课程的过程中,我一直在寻求帮助。
谢谢,
B.
from bs4 import BeautifulSoup
from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.styles import Color, PatternFill, Font, Border
from openpyxl.styles import colors
from openpyxl.cell import Cell
import colorama
from colorama import Fore, Style
import os
from keyboard import press
import re
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import shutil
import math
import pandas
from decimal import Decimal
from openpyxl.styles import Alignment
xlfile = "ATVI.xlsx"
if os.path.exists(xlfile):
os.remove(xlfile)
src_file ="uk_yahoo_finance_for_stock_ATVI.xlsx"
dst_file = "ATVI.xlsx"
shutil.copy(src_file, dst_file)
wb = Workbook()
xlfile = "ATVI.xlsx"
wb = load_workbook(xlfile)
#print('B3 to B5')
wb = Workbook()
wb = load_workbook(xlfile)
#########################################
#########################################
def round_up(n, decimals=0):
multiplier = 10 ** decimals
return math.ceil(n * multiplier) / multiplier
def truncate(n, decimals=3):
multiplier = 10 ** decimals
return int(n * multiplier) / multiplier
def percentage(a, b):
return round(a / b * 100, 2)
d = {
'K': 3,
'M': 6,
'B': 9
}
def text_to_num(text):
if text[-1] in d:
num, magnitude = text[:-1], text[-1]
return Decimal(num) * 10 ** d[magnitude]
else:
return Decimal(text)
def percent2fraction(x):
return float(x.strip('%'))/100
##########################################
#########################
del wb['Sheet']
wb.save(xlfile)
##########################################
blueFill = PatternFill(start_color="0D57A2", end_color="0D57A2", fill_type = "solid")
whiteFont = Font(color=colors.WHITE)
##########################################
"""
for xws in wb.sheetnames:
sheet = wb[xws]
sheet.delete_rows(74, 1)
sheet.delete_rows(72, 1)
sheet.delete_rows(70, 1)
sheet.delete_rows(30, 1)
sheet.delete_rows(28, 1)
sheet.delete_rows(4, 1)
sheet.delete_rows(2, 1)
wb.save(xlfile)
"""
##########################################
for xws in wb.sheetnames:
sheet = wb[xws]
sheet.merge_cells('A1:F1')
sheet['A1'].fill = blueFill
sheet['A1'].font = whiteFont
sheet['A1'].alignment = Alignment(horizontal='center')
sheet.delete_rows(2,1)
sheet.delete_rows(3,1)
sheet['A2'] = "Period End"
sheet['A2'].fill = blueFill
sheet['A2'].font = whiteFont
sheet['B2'].fill = blueFill
sheet['B2'].font = whiteFont
sheet['C2'].fill = blueFill
sheet['C2'].font = whiteFont
sheet['D2'].fill = blueFill
sheet['D2'].font = whiteFont
sheet['E2'].fill = blueFill
sheet['E2'].font = whiteFont
sheet['F2'].fill = blueFill
sheet['F2'].font = whiteFont
wb.save(xlfile)
for xws in wb.sheetnames:
sheet = wb[xws]
sheet.merge_cells('A6:F6')
sheet['A6'].fill = blueFill
sheet['A6'].font = whiteFont
sheet['A16'].fill = blueFill
sheet['A16'].font = whiteFont
sheet['B16'].fill = blueFill
sheet['B16'].font = whiteFont
sheet['C16'].fill = blueFill
sheet['C16'].font = whiteFont
sheet['D16'].fill = blueFill
sheet['D16'].font = whiteFont
sheet['E16'].fill = blueFill
sheet['E16'].font = whiteFont
sheet['F16'].fill = blueFill
sheet['F16'].font = whiteFont
wb.save(xlfile)
for xws in wb.sheetnames:
sheet = wb[xws]
sheet.merge_cells('A25:F25')
sheet['A25'].fill = blueFill
sheet['A25'].font = whiteFont
sheet['A25'].alignment = Alignment(horizontal='center')
sheet.delete_rows(26,1)
sheet['A26'] = "Period End"
sheet['A26'].fill = blueFill
sheet['A26'].font = whiteFont
sheet['B26'].fill = blueFill
sheet['B26'].font = whiteFont
sheet['C26'].fill = blueFill
sheet['C26'].font = whiteFont
sheet['D26'].fill = blueFill
sheet['D26'].font = whiteFont
sheet['E26'].fill = blueFill
sheet['E26'].font = whiteFont
sheet['F26'].fill = blueFill
sheet['F26'].font = whiteFont
sheet.delete_rows(27,1)
sheet.merge_cells('A27:F27')
sheet['A27'].fill = blueFill
sheet['A27'].font = whiteFont
sheet['A27'].alignment = Alignment(horizontal='center')
sheet.merge_cells('A47:F47')
sheet['A47'].fill = blueFill
sheet['A47'].font = whiteFont
sheet['A47'].alignment = Alignment(horizontal='center')
sheet.merge_cells('A59:F59')
sheet['A59'].fill = blueFill
sheet['A59'].font = whiteFont
sheet['A59'].alignment = Alignment(horizontal='center')
sheet.merge_cells('A67:F67')
sheet['A67'].fill = blueFill
sheet['A67'].font = whiteFont
sheet['A67'].alignment = Alignment(horizontal='center')
sheet.delete_rows(68,1)
sheet['A68'] = "Period End"
sheet['A68'].fill = blueFill
sheet['A68'].font = whiteFont
sheet['B68'].fill = blueFill
sheet['B68'].font = whiteFont
sheet['C68'].fill = blueFill
sheet['C68'].font = whiteFont
sheet['D68'].fill = blueFill
sheet['D68'].font = whiteFont
sheet['E68'].fill = blueFill
sheet['E68'].font = whiteFont
sheet['F68'].fill = blueFill
sheet['F68'].font = whiteFont
wb.save(xlfile)
for xws in wb.sheetnames:
sheet = wb[xws]
sheet.merge_cells('A70:F70')
sheet['A70'].fill = blueFill
sheet['A70'].font = whiteFont
sheet['A70'].alignment = Alignment(horizontal='center')
sheet.merge_cells('A82:F82')
sheet['A82'].fill = blueFill
sheet['A82'].font = whiteFont
sheet['A82'].alignment = Alignment(horizontal='center')
wb.save(xlfile)
for xws in wb.sheetnames:
sheet = wb[xws]
sheet.merge_cells('A89:F89')
sheet['A89'].fill = blueFill
sheet['A89'].font = whiteFont
sheet['A89'].alignment = Alignment(horizontal='center')
sheet.merge_cells('A98:F98')
sheet['A98'].fill = blueFill
sheet['A98'].font = whiteFont
sheet['A98'].alignment = Alignment(horizontal='center')
wb.save(xlfile)
##########################################
for xws in wb.sheetnames:
worksheet = wb[xws]
#print(worksheet)
tuple(worksheet['B138':'B138'])
for rowOfCellObjects in worksheet['B138':'B138']:
for cellObj in rowOfCellObjects:
v1 = worksheet['B138'].value
v2 = text_to_num(v1)
v3 = truncate(v2, 0)
cellObj.value = v3
if cellObj.value > 0:
cellObj.number_format = '[<999950] 0.0,"K";[<999950000]0.0,,"M";0.0,,,"B"'
elif cellObj.value == 0:
cellObj.number_format = '[<999950] 0.0,"K";[<999950000]0.0,,"M";0.0,,,"B"'
else:
cellObj.number_format = '[>-999950]0.0,"K";[>-999950000]0.0,,"M";0.0,,,"B"'
cellObj.fill = PatternFill(fgColor='DFECF7', fill_type = 'solid')
wb.save(xlfile)
v1 = None
v2 = None
v3 = None
v4 = None
##########################################
dash = "-"
for xws in wb.sheetnames:
worksheet = wb[xws]
tuple(worksheet['B3':'F96'])
for rowOfCellObjects in worksheet['B3':'F96']:
for cellObj in rowOfCellObjects:
cellValue = cellObj.value
if cellValue == dash:
cellObj.value = 0
#print('--- END OF ROW CHANGE---')
wb.save(xlfile)
##########################################
################################
print('B3 to F5')
for xws in wb.sheetnames:
worksheet = wb[xws]
dash = "-"
tuple(worksheet['B3':'F5'])
for rowOfCellObjects in worksheet['B3':'F5']:
for cellObj in rowOfCellObjects:
cellValue = cellObj.value
if cellValue != dash:
if cellValue != 0:
if cellValue != None:
x = str(cellValue)
y = str(x) + ",000"
cellObj.value = y
cellObj.value = cellObj.value.replace(',', '')
cellObj.value = int(cellObj.value)
wb.save(xlfile)
if dash not in cellValue:
cellObj.number_format = '[<999950] 0.0,"K";[<999950000]0.0,,"M";0.0,,,"B"'
else:
cellObj.number_format = '[>-999950]0.0,"K";[>-999950000]0.0,,"M";0.0,,,"B"'
#
cellObj.value = int(float(cellObj.value))
#press('enter')
#print('--- END OF ROW CHANGE---')
wb.save(xlfile)
################################
######################
print('B7 to F15')
for xws in wb.sheetnames:
worksheet = wb[xws]
dash = "-"
tuple(worksheet['B7':'F15'])
for rowOfCellObjects in worksheet['B7':'F15']:
for cellObj in rowOfCellObjects:
cellValue = cellObj.value
if cellValue != dash:
if cellValue != 0:
if cellValue != None:
x = str(cellValue)
y = str(x) + ",000"
cellObj.value = y
cellObj.value = cellObj.value.replace(',', '')
wb.save(xlfile)
if dash not in cellValue:
cellObj.number_format = '[<999950] 0.0,"K";[<999950000]0.0,,"M";0.0,,,"B"'
else:
cellObj.number_format = '[>-999950]0.0,"K";[>-999950000]0.0,,"M";0.0,,,"B"'
#
cellObj.value = int(float(cellObj.value))
#press('enter')
#print('--- END OF ROW CHANGE---')
wb.save(xlfile)
回答 ->
for xws in wb.sheetnames:
worksheet = wb[xws]
#for row in worksheet.iter_rows("A"):
#for row in worksheet.iter_cols("A"):
for row in worksheet:
for cell in row:
#cell value you want
if cell.value == "Shares outstanding 5":
#change column number for any cell value you
#x = int(worksheet.cell(row=cell.row, column=2).value)
#print(worksheet.cell(row=cell.row, column=2).value)
x = (worksheet.cell(row=cell.row, column=2).value)
print(x)
如果 A 列的单元格值为“优秀...”,我正在尝试在 Microsoft Excel 的 B 列中查找单元格值。代码错误,找不到单元格值
wb = Workbook()
xlfile = "ATVI.xlsx"
wb = load_workbook(xlfile)
for xws in wb.sheetnames:
worksheet = wb[xws]
for row in worksheet.iter_rows("A")
for cell in row:
#cell value you want
if cell.value == "Shares outstanding 5":
#change column number for any cell value you
print(ws.cell(row=cell.row, column=2).value)
代码确实可以更改 excel 文件数据 - 下面的示例示例,但是当我在原始数据中搜索特定单元格值时失败,该单元格值在每个 [=24= 的不同行中].在继续学习本课程的过程中,我一直在寻求帮助。
谢谢,
B.
from bs4 import BeautifulSoup
from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.styles import Color, PatternFill, Font, Border
from openpyxl.styles import colors
from openpyxl.cell import Cell
import colorama
from colorama import Fore, Style
import os
from keyboard import press
import re
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import shutil
import math
import pandas
from decimal import Decimal
from openpyxl.styles import Alignment
xlfile = "ATVI.xlsx"
if os.path.exists(xlfile):
os.remove(xlfile)
src_file ="uk_yahoo_finance_for_stock_ATVI.xlsx"
dst_file = "ATVI.xlsx"
shutil.copy(src_file, dst_file)
wb = Workbook()
xlfile = "ATVI.xlsx"
wb = load_workbook(xlfile)
#print('B3 to B5')
wb = Workbook()
wb = load_workbook(xlfile)
#########################################
#########################################
def round_up(n, decimals=0):
multiplier = 10 ** decimals
return math.ceil(n * multiplier) / multiplier
def truncate(n, decimals=3):
multiplier = 10 ** decimals
return int(n * multiplier) / multiplier
def percentage(a, b):
return round(a / b * 100, 2)
d = {
'K': 3,
'M': 6,
'B': 9
}
def text_to_num(text):
if text[-1] in d:
num, magnitude = text[:-1], text[-1]
return Decimal(num) * 10 ** d[magnitude]
else:
return Decimal(text)
def percent2fraction(x):
return float(x.strip('%'))/100
##########################################
#########################
del wb['Sheet']
wb.save(xlfile)
##########################################
blueFill = PatternFill(start_color="0D57A2", end_color="0D57A2", fill_type = "solid")
whiteFont = Font(color=colors.WHITE)
##########################################
"""
for xws in wb.sheetnames:
sheet = wb[xws]
sheet.delete_rows(74, 1)
sheet.delete_rows(72, 1)
sheet.delete_rows(70, 1)
sheet.delete_rows(30, 1)
sheet.delete_rows(28, 1)
sheet.delete_rows(4, 1)
sheet.delete_rows(2, 1)
wb.save(xlfile)
"""
##########################################
for xws in wb.sheetnames:
sheet = wb[xws]
sheet.merge_cells('A1:F1')
sheet['A1'].fill = blueFill
sheet['A1'].font = whiteFont
sheet['A1'].alignment = Alignment(horizontal='center')
sheet.delete_rows(2,1)
sheet.delete_rows(3,1)
sheet['A2'] = "Period End"
sheet['A2'].fill = blueFill
sheet['A2'].font = whiteFont
sheet['B2'].fill = blueFill
sheet['B2'].font = whiteFont
sheet['C2'].fill = blueFill
sheet['C2'].font = whiteFont
sheet['D2'].fill = blueFill
sheet['D2'].font = whiteFont
sheet['E2'].fill = blueFill
sheet['E2'].font = whiteFont
sheet['F2'].fill = blueFill
sheet['F2'].font = whiteFont
wb.save(xlfile)
for xws in wb.sheetnames:
sheet = wb[xws]
sheet.merge_cells('A6:F6')
sheet['A6'].fill = blueFill
sheet['A6'].font = whiteFont
sheet['A16'].fill = blueFill
sheet['A16'].font = whiteFont
sheet['B16'].fill = blueFill
sheet['B16'].font = whiteFont
sheet['C16'].fill = blueFill
sheet['C16'].font = whiteFont
sheet['D16'].fill = blueFill
sheet['D16'].font = whiteFont
sheet['E16'].fill = blueFill
sheet['E16'].font = whiteFont
sheet['F16'].fill = blueFill
sheet['F16'].font = whiteFont
wb.save(xlfile)
for xws in wb.sheetnames:
sheet = wb[xws]
sheet.merge_cells('A25:F25')
sheet['A25'].fill = blueFill
sheet['A25'].font = whiteFont
sheet['A25'].alignment = Alignment(horizontal='center')
sheet.delete_rows(26,1)
sheet['A26'] = "Period End"
sheet['A26'].fill = blueFill
sheet['A26'].font = whiteFont
sheet['B26'].fill = blueFill
sheet['B26'].font = whiteFont
sheet['C26'].fill = blueFill
sheet['C26'].font = whiteFont
sheet['D26'].fill = blueFill
sheet['D26'].font = whiteFont
sheet['E26'].fill = blueFill
sheet['E26'].font = whiteFont
sheet['F26'].fill = blueFill
sheet['F26'].font = whiteFont
sheet.delete_rows(27,1)
sheet.merge_cells('A27:F27')
sheet['A27'].fill = blueFill
sheet['A27'].font = whiteFont
sheet['A27'].alignment = Alignment(horizontal='center')
sheet.merge_cells('A47:F47')
sheet['A47'].fill = blueFill
sheet['A47'].font = whiteFont
sheet['A47'].alignment = Alignment(horizontal='center')
sheet.merge_cells('A59:F59')
sheet['A59'].fill = blueFill
sheet['A59'].font = whiteFont
sheet['A59'].alignment = Alignment(horizontal='center')
sheet.merge_cells('A67:F67')
sheet['A67'].fill = blueFill
sheet['A67'].font = whiteFont
sheet['A67'].alignment = Alignment(horizontal='center')
sheet.delete_rows(68,1)
sheet['A68'] = "Period End"
sheet['A68'].fill = blueFill
sheet['A68'].font = whiteFont
sheet['B68'].fill = blueFill
sheet['B68'].font = whiteFont
sheet['C68'].fill = blueFill
sheet['C68'].font = whiteFont
sheet['D68'].fill = blueFill
sheet['D68'].font = whiteFont
sheet['E68'].fill = blueFill
sheet['E68'].font = whiteFont
sheet['F68'].fill = blueFill
sheet['F68'].font = whiteFont
wb.save(xlfile)
for xws in wb.sheetnames:
sheet = wb[xws]
sheet.merge_cells('A70:F70')
sheet['A70'].fill = blueFill
sheet['A70'].font = whiteFont
sheet['A70'].alignment = Alignment(horizontal='center')
sheet.merge_cells('A82:F82')
sheet['A82'].fill = blueFill
sheet['A82'].font = whiteFont
sheet['A82'].alignment = Alignment(horizontal='center')
wb.save(xlfile)
for xws in wb.sheetnames:
sheet = wb[xws]
sheet.merge_cells('A89:F89')
sheet['A89'].fill = blueFill
sheet['A89'].font = whiteFont
sheet['A89'].alignment = Alignment(horizontal='center')
sheet.merge_cells('A98:F98')
sheet['A98'].fill = blueFill
sheet['A98'].font = whiteFont
sheet['A98'].alignment = Alignment(horizontal='center')
wb.save(xlfile)
##########################################
for xws in wb.sheetnames:
worksheet = wb[xws]
#print(worksheet)
tuple(worksheet['B138':'B138'])
for rowOfCellObjects in worksheet['B138':'B138']:
for cellObj in rowOfCellObjects:
v1 = worksheet['B138'].value
v2 = text_to_num(v1)
v3 = truncate(v2, 0)
cellObj.value = v3
if cellObj.value > 0:
cellObj.number_format = '[<999950] 0.0,"K";[<999950000]0.0,,"M";0.0,,,"B"'
elif cellObj.value == 0:
cellObj.number_format = '[<999950] 0.0,"K";[<999950000]0.0,,"M";0.0,,,"B"'
else:
cellObj.number_format = '[>-999950]0.0,"K";[>-999950000]0.0,,"M";0.0,,,"B"'
cellObj.fill = PatternFill(fgColor='DFECF7', fill_type = 'solid')
wb.save(xlfile)
v1 = None
v2 = None
v3 = None
v4 = None
##########################################
dash = "-"
for xws in wb.sheetnames:
worksheet = wb[xws]
tuple(worksheet['B3':'F96'])
for rowOfCellObjects in worksheet['B3':'F96']:
for cellObj in rowOfCellObjects:
cellValue = cellObj.value
if cellValue == dash:
cellObj.value = 0
#print('--- END OF ROW CHANGE---')
wb.save(xlfile)
##########################################
################################
print('B3 to F5')
for xws in wb.sheetnames:
worksheet = wb[xws]
dash = "-"
tuple(worksheet['B3':'F5'])
for rowOfCellObjects in worksheet['B3':'F5']:
for cellObj in rowOfCellObjects:
cellValue = cellObj.value
if cellValue != dash:
if cellValue != 0:
if cellValue != None:
x = str(cellValue)
y = str(x) + ",000"
cellObj.value = y
cellObj.value = cellObj.value.replace(',', '')
cellObj.value = int(cellObj.value)
wb.save(xlfile)
if dash not in cellValue:
cellObj.number_format = '[<999950] 0.0,"K";[<999950000]0.0,,"M";0.0,,,"B"'
else:
cellObj.number_format = '[>-999950]0.0,"K";[>-999950000]0.0,,"M";0.0,,,"B"'
#
cellObj.value = int(float(cellObj.value))
#press('enter')
#print('--- END OF ROW CHANGE---')
wb.save(xlfile)
################################
######################
print('B7 to F15')
for xws in wb.sheetnames:
worksheet = wb[xws]
dash = "-"
tuple(worksheet['B7':'F15'])
for rowOfCellObjects in worksheet['B7':'F15']:
for cellObj in rowOfCellObjects:
cellValue = cellObj.value
if cellValue != dash:
if cellValue != 0:
if cellValue != None:
x = str(cellValue)
y = str(x) + ",000"
cellObj.value = y
cellObj.value = cellObj.value.replace(',', '')
wb.save(xlfile)
if dash not in cellValue:
cellObj.number_format = '[<999950] 0.0,"K";[<999950000]0.0,,"M";0.0,,,"B"'
else:
cellObj.number_format = '[>-999950]0.0,"K";[>-999950000]0.0,,"M";0.0,,,"B"'
#
cellObj.value = int(float(cellObj.value))
#press('enter')
#print('--- END OF ROW CHANGE---')
wb.save(xlfile)
回答 ->
for xws in wb.sheetnames:
worksheet = wb[xws]
#for row in worksheet.iter_rows("A"):
#for row in worksheet.iter_cols("A"):
for row in worksheet:
for cell in row:
#cell value you want
if cell.value == "Shares outstanding 5":
#change column number for any cell value you
#x = int(worksheet.cell(row=cell.row, column=2).value)
#print(worksheet.cell(row=cell.row, column=2).value)
x = (worksheet.cell(row=cell.row, column=2).value)
print(x)