openpyxl之提取列并做预处理
要求:提取Excel文件 一,二,三中的A列与C列,遍历两列的值如有负值处理为正值,并计算处理后的两列值的平均值,作为第三列.(列名为 mean),最后保存为新的excel{:9_221:} {:9_221:} {:9_221:} 为了完成此任务,您需要先安装`openpyxl`模块,如果尚未安装,请使用以下命令安装:
pip install openpyxl
然后,您可以使用以下代码来完成任务:
import openpyxl
from openpyxl import Workbook
# 加载工作簿
workbook1 = openpyxl.load_workbook("一.xlsx")
workbook2 = openpyxl.load_workbook("二.xlsx")
workbook3 = openpyxl.load_workbook("三.xlsx")
workbooks =
# 创建一个新的Excel文件来存储结果
result_workbook = Workbook()
result_sheet = result_workbook.active
result_sheet.title = "处理结果"
# 写入列名
result_sheet.cell(row=1, column=1, value="A")
result_sheet.cell(row=1, column=2, value="C")
result_sheet.cell(row=1, column=3, value="mean")
row_counter = 2
for wb in workbooks:
sheet = wb.active
max_row = sheet.max_row
for row in range(2, max_row + 1):
# 提取A列与C列的值
a_value = sheet.cell(row=row, column=1).value
c_value = sheet.cell(row=row, column=3).value
# 处理负值
if a_value < 0:
a_value = abs(a_value)
if c_value < 0:
c_value = abs(c_value)
# 计算平均值
mean_value = (a_value + c_value) / 2
# 将结果写入新的Excel文件
result_sheet.cell(row=row_counter, column=1, value=a_value)
result_sheet.cell(row=row_counter, column=2, value=c_value)
result_sheet.cell(row=row_counter, column=3, value=mean_value)
row_counter += 1
# 保存结果为新的Excel文件
result_workbook.save("结果.xlsx")
这段代码会读取文件一,二,三的A列与C列,处理负值并计算平均值,然后将结果写入一个名为“结果.xlsx”的新Excel文件。您需要将文件名替换为实际的文件名。 isdkz 发表于 2023-4-25 09:41
为了完成此任务,您需要先安装`openpyxl`模块,如果尚未安装,请使用以下命令安装:
各自处理一,二,三文件数据,出现
File "C:\code\结果.py", line 21, in <module>
sheet = wb.active
AttributeError: 'Worksheet' object has no attribute 'active'
是为什么,应如何解决呢 王大可2000 发表于 2023-4-25 10:02
各自处理一,二,三文件数据,出现
File "C:\code\结果.py", line 21, in
sheet = wb.active
你的表格文件是什么格式的?你的完整代码又是什么? isdkz 发表于 2023-4-25 10:49
你的表格文件是什么格式的?你的完整代码又是什么?
import openpyxl
from openpyxl import Workbook
# 加载工作簿
workbook = openpyxl.load_workbook("安溪.xlsx")
# 创建一个新的Excel文件来存储结果
result_workbook = Workbook()
result_sheet = result_workbook.active
result_sheet.title = "处理结果"
# 写入列名
result_sheet.cell(row=1, column=1, value="PRE")
result_sheet.cell(row=1, column=2, value="SSH")
result_sheet.cell(row=1, column=3, value="mean")
row_counter = 2
for wb in workbook:
sheet = wb.active
max_row = sheet.max_row
for row in range(2, max_row + 1):
# 提取S列与T列的值
a_value = sheet.cell(row=row, column=19).value
c_value = sheet.cell(row=row, column=20).value
# 处理负值
if a_value < 0:
a_value = abs(a_value)
if c_value < 0:
c_value = abs(c_value)
# 计算平均值
mean_value = (a_value + c_value) / 2
# 将结果写入新的Excel文件
result_sheet.cell(row=row_counter, column=1, value=a_value)
result_sheet.cell(row=row_counter, column=2, value=c_value)
result_sheet.cell(row=row_counter, column=3, value=mean_value)
row_counter += 1
# 保存结果为新的Excel文件
result_workbook.save("安溪结果.xlsx")
王大可2000 发表于 2023-4-25 10:52
import openpyxl
from openpyxl import Workbook
你不是说有三个excel文件吗?你的代码就只有一个? isdkz 发表于 2023-4-25 10:54
你不是说有三个excel文件吗?你的代码就只有一个?
三个文件分开处理,要求一样 王大可2000 发表于 2023-4-25 10:59
三个文件分开处理,要求一样
了解,这是处理单个Excel文件的代码。您可以根据需要修改文件名和输出文件名。
import openpyxl
from openpyxl import Workbook
# 加载工作簿
workbook = openpyxl.load_workbook("文件名.xlsx")
# 获取活动工作表
sheet = workbook.active
# 创建一个新的Excel文件来存储结果
result_workbook = Workbook()
result_sheet = result_workbook.active
result_sheet.title = "处理结果"
# 写入列名
result_sheet.cell(row=1, column=1, value="A")
result_sheet.cell(row=1, column=2, value="C")
result_sheet.cell(row=1, column=3, value="mean")
max_row = sheet.max_row
for row in range(2, max_row + 1):
# 提取A列与C列的值
a_value = sheet.cell(row=row, column=1).value
c_value = sheet.cell(row=row, column=3).value
# 处理负值
if a_value < 0:
a_value = abs(a_value)
if c_value < 0:
c_value = abs(c_value)
# 计算平均值
mean_value = (a_value + c_value) / 2
# 将结果写入新的Excel文件
result_sheet.cell(row=row, column=1, value=a_value)
result_sheet.cell(row=row, column=2, value=c_value)
result_sheet.cell(row=row, column=3, value=mean_value)
# 保存结果为新的Excel文件
result_workbook.save("处理结果.xlsx")
这段代码会读取一个Excel文件的A列与C列,处理负值并计算平均值,然后将结果写入一个名为“处理结果.xlsx”的新Excel文件。您需要将“文件名.xlsx”替换为实际的文件名,以及将“处理结果.xlsx”替换为您想要的输出文件名。如果您需要处理其他两个文件,只需将此代码复制并修改输入和输出文件名即可。
页:
[1]