鱼C论坛

 找回密码
 立即注册
查看: 2034|回复: 2

[已解决]openpyxl求助之提取Excel表中的某两列

[复制链接]
发表于 2023-4-12 18:41:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
excel文件提取列,要求提取A列和C列,保存为新的excel.
import os
from openpyxl import load_workbook
wb = load_workbook("安溪.xlsx ")
sheet = wb.worksheets[0]
for row in sheet.iter_rows(min_row= 1)
    cell0 = row[0]
    cell1 = row[1]
    cell18 = row[18]
    print(cell0.value,cell1.value,cell18.value)
求问为什么出错
最佳答案
2023-4-12 18:43:09
本帖最后由 isdkz 于 2023-4-12 18:44 编辑

您的代码中有几个问题。根据您的需求,我将解释如何修复它们。

  • 首先,您只提到了提取A列和C列,但您的代码也在提取第19列。我会在修复的代码中删除这一部分。
  • 您的代码中缺少冒号。在for row in sheet.iter_rows(min_row=1)后面加上冒号。
  • 若要将A列和C列的数据保存到新的Excel文件中,您需要创建一个新的工作簿并将数据写入其中。我将在修复的代码中添加这个过程。


修复后的代码如下:
import os
from openpyxl import load_workbook
from openpyxl import Workbook

# 加载现有的工作簿
wb = load_workbook("安溪.xlsx")
sheet = wb.worksheets[0]

# 创建一个新的工作簿以保存提取的列
new_wb = Workbook()
new_sheet = new_wb.active

# 遍历原始表格中的行
for row in sheet.iter_rows(min_row=1):
    cell0 = row[0]
    cell2 = row[2]  # 将索引更改为2以获取C列

    # 打印值(用于调试目的)
    print(cell0.value, cell2.value)

    # 将值写入新工作表
    new_row = [cell0.value, cell2.value]
    new_sheet.append(new_row)

# 保存新的工作簿
new_wb.save("提取的列.xlsx")

这段代码应该可以正确地提取A列和C列并将它们保存到一个名为"提取的列.xlsx"的新文件中。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-12 18:43:09 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2023-4-12 18:44 编辑

您的代码中有几个问题。根据您的需求,我将解释如何修复它们。

  • 首先,您只提到了提取A列和C列,但您的代码也在提取第19列。我会在修复的代码中删除这一部分。
  • 您的代码中缺少冒号。在for row in sheet.iter_rows(min_row=1)后面加上冒号。
  • 若要将A列和C列的数据保存到新的Excel文件中,您需要创建一个新的工作簿并将数据写入其中。我将在修复的代码中添加这个过程。


修复后的代码如下:
import os
from openpyxl import load_workbook
from openpyxl import Workbook

# 加载现有的工作簿
wb = load_workbook("安溪.xlsx")
sheet = wb.worksheets[0]

# 创建一个新的工作簿以保存提取的列
new_wb = Workbook()
new_sheet = new_wb.active

# 遍历原始表格中的行
for row in sheet.iter_rows(min_row=1):
    cell0 = row[0]
    cell2 = row[2]  # 将索引更改为2以获取C列

    # 打印值(用于调试目的)
    print(cell0.value, cell2.value)

    # 将值写入新工作表
    new_row = [cell0.value, cell2.value]
    new_sheet.append(new_row)

# 保存新的工作簿
new_wb.save("提取的列.xlsx")

这段代码应该可以正确地提取A列和C列并将它们保存到一个名为"提取的列.xlsx"的新文件中。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-12 18:56:53 | 显示全部楼层
在代码中,需要使用冒号来表示行区间,列也需要使用字母表示。另外,循环语句需要加上冒号表示循环代码块。以下为修改后的正确代码:
import os
from openpyxl import load_workbook

wb = load_workbook("安溪.xlsx")
sheet = wb.worksheets[0]

# 创建新的Workbook对象
new_wb = Workbook()
new_sheet = new_wb.active

for row in sheet.iter_rows(min_row=1):
    cell_A = row[0]
    cell_C = row[2]
    new_sheet.append([cell_A.value, cell_C.value])

new_wb.save("提取结果.xlsx")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 21:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表