鱼C论坛

 找回密码
 立即注册
查看: 2572|回复: 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文件中,您需要创建一个新的工作簿并将数据写入其中。我将在修复的代码中添加这个过程。


修复后的代码如下:

  1. import os
  2. from openpyxl import load_workbook
  3. from openpyxl import Workbook

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

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

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

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

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

  19. # 保存新的工作簿
  20. new_wb.save("提取的列.xlsx")
复制代码


这段代码应该可以正确地提取A列和C列并将它们保存到一个名为"提取的列.xlsx"的新文件中。
小甲鱼最新课程 -> https://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文件中,您需要创建一个新的工作簿并将数据写入其中。我将在修复的代码中添加这个过程。


修复后的代码如下:

  1. import os
  2. from openpyxl import load_workbook
  3. from openpyxl import Workbook

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

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

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

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

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

  19. # 保存新的工作簿
  20. new_wb.save("提取的列.xlsx")
复制代码


这段代码应该可以正确地提取A列和C列并将它们保存到一个名为"提取的列.xlsx"的新文件中。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  1. import os
  2. from openpyxl import load_workbook

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

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

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

  12. new_wb.save("提取结果.xlsx")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 12:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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