使用 openpyxl 查找包含具有特定值的单元格的行
Using openpyxl to find rows that contain cell with specific value
我是 openpyxl
的新手,所以,正如您想象的那样,我在尝试使用它时遇到了很多困难。
我有一份 Excel 报告,其中仅包含一个 sheet(称为 Sheet1)
。我想在所有单元格中搜索包含特定字符串(产品名称 ABC in这种情况)。
然后我想复制包含具有 ABC
产品名称的单元格的行中每个单元格的内容。并将每个单元格分配给一个变量。
为了让您更好地了解我要实现的目标,我将举个例子:
所以在这种情况下,我只会复制第 2、4、6 行的单元格(因为它们只包含 ABC
产品)。
我已经查过类似的问题和答案,但我不明白(以前从未使用过Excel)。
使用 openpyxl 来做这个对你来说重要吗?如果没有,我建议使用 pandas。
import pandas as pd
df = pd.read_excel("path_to_excel_file")
df_abc = df[df["Products"] == "ABC"] # this will only contain 2,4,6 rows
然后:
for row in df_abc.iterrows():
# do what you want with the row
from openpyxl import load_workbook
wb = load_workbook("report.xlsx")
ws = wb.active
for row in ws.rows:
if row[4].value == "ABC":
for cell in row:
print(cell.value, end=" ")
print()
不需要为此使用 pandas。
from openpyxl import Workbook
import openpyxl
file = "enter_path_to_file_here"
wb = openpyxl.load_workbook(file, read_only=True)
ws = wb.active
for row in ws.iter_rows("E"):
for cell in row:
if cell.value == "ABC":
print(ws.cell(row=cell.row, column=2).value) #change column number for any cell value you want
wb = load_workbook("report.xlsx")
ws = wb.active
abc_rows=[]
for row in range(2,ws.max_row+1):
if(ws[row][4]=='ABC'):
abc_rows.append(row)
要单独访问选定的行,请进一步添加此代码
i=1
abc_dict={}
for row in ws.values:
if(i in abc_rows):
(a,b,c,d,e,f,g,h,i,j,k,l)=row
abc_dict[i]=row
i=i+1
要单独访问选定的行,请使用
abc_dict[2] gives entire second row as tuples and abc_dict[2][0] gives
first cell value. you can parse till abc_dict[2][11] to get each cell
of selected rows seperately.
我是 openpyxl
的新手,所以,正如您想象的那样,我在尝试使用它时遇到了很多困难。
我有一份 Excel 报告,其中仅包含一个 sheet(称为 Sheet1)
。我想在所有单元格中搜索包含特定字符串(产品名称 ABC in这种情况)。
然后我想复制包含具有 ABC
产品名称的单元格的行中每个单元格的内容。并将每个单元格分配给一个变量。
为了让您更好地了解我要实现的目标,我将举个例子:
所以在这种情况下,我只会复制第 2、4、6 行的单元格(因为它们只包含 ABC
产品)。
我已经查过类似的问题和答案,但我不明白(以前从未使用过Excel)。
使用 openpyxl 来做这个对你来说重要吗?如果没有,我建议使用 pandas。
import pandas as pd
df = pd.read_excel("path_to_excel_file")
df_abc = df[df["Products"] == "ABC"] # this will only contain 2,4,6 rows
然后:
for row in df_abc.iterrows():
# do what you want with the row
from openpyxl import load_workbook
wb = load_workbook("report.xlsx")
ws = wb.active
for row in ws.rows:
if row[4].value == "ABC":
for cell in row:
print(cell.value, end=" ")
print()
不需要为此使用 pandas。
from openpyxl import Workbook
import openpyxl
file = "enter_path_to_file_here"
wb = openpyxl.load_workbook(file, read_only=True)
ws = wb.active
for row in ws.iter_rows("E"):
for cell in row:
if cell.value == "ABC":
print(ws.cell(row=cell.row, column=2).value) #change column number for any cell value you want
wb = load_workbook("report.xlsx")
ws = wb.active
abc_rows=[]
for row in range(2,ws.max_row+1):
if(ws[row][4]=='ABC'):
abc_rows.append(row)
要单独访问选定的行,请进一步添加此代码
i=1
abc_dict={}
for row in ws.values:
if(i in abc_rows):
(a,b,c,d,e,f,g,h,i,j,k,l)=row
abc_dict[i]=row
i=i+1
要单独访问选定的行,请使用
abc_dict[2] gives entire second row as tuples and abc_dict[2][0] gives first cell value. you can parse till abc_dict[2][11] to get each cell of selected rows seperately.