本人小白, 通过openpyxl,来把一个Excel中指定两列的数据写入一个已存的Excel表中,(选定的两列数据写入时,最后一列如果没有数据则不写入)(指定两列数据要的全是数字类的,他们上边几行有文字) 求给位大佬解析下,应该怎么写这个程序
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
你好!根据你的需求,使用Python的openpyxl
库来读取一个Excel文件中的指定两列数据,并将这些数据追加到另一个已存在的Excel表中,同时确保如果最后一行没有数字则不写入,可以参考以下示例代码。这里假设你想要读取的是源Excel文件(source.xlsx)的A列和B列,并且要写入的目标Excel文件(target.xlsx)已经存在,我们将在其Sheet1中追加数据。
首先,请确保你已经安装了openpyxl
库,如果没有安装,可以通过pip安装:
pip install openpyxl
然后,你可以使用以下Python脚本来实现这个功能:
from openpyxl import load_workbook
from openpyxl.utils.cell import get_column_letter
# 读取源Excel文件
source_wb = load_workbook('source.xlsx')
source_ws = source_wb.active
# 写入目标Excel文件
target_wb = load_workbook('target.xlsx')
target_ws = target_wb.active
# 获取源Excel的最后一行有数据的行号
last_row = max([cell.row for cell in source_ws['A'] if cell.value is not None])
# 遍历指定列(例如A列和B列),并检查是否为数字类型的数据
for row in range(1, last_row + 1):
value_a = source_ws[f'A{row}'].value
value_b = source_ws[f'B{row}'].value
# 检查是否全为数字
if isinstance(value_a, (int, float)) and isinstance(value_b, (int, float)):
# 找到目标工作表的最后一行的下一行
next_empty_row = target_ws.max_row + 1
target_ws[f'{get_column_letter(1)}{next_empty_row}'] = value_a
target_ws[f'{get_column_letter(2)}{next_empty_row}'] = value_b
# 保存修改后的目标Excel文件
target_wb.save('target.xlsx')
print("数据迁移完成!")
这段代码首先加载了源Excel文件和目标Excel文件,然后遍历源文件中指定的两列(A列和B列),检查每一行的值是否都是数字类型。如果是,则将这两列的值追加到目标Excel文件的Sheet1中。注意,这里假设“全是数字类的”指的是整数或浮点数类型,且忽略了非数字类型的上几行文字内容。最后,它保存了修改后的目标Excel文件。
请根据实际情况调整文件路径和列的选择。希望这能帮助到你!