我想从电子表格中仅提取A列。我有以下代码,但它来自所有列。
from openpyxl import Workbook, load_workbook
wb=load_workbook("/home/ilissa/Documents/AnacondaFiles/AZ_Palmetto_MUSC_searchterms.xlsx", use_iterators=True)
sheet_ranges=wb['PrivAlert Terms']
for row in sheet_ranges.iter_rows(row_offset=1):
for cell in row:
print(cell.value)
答案 0 :(得分:10)
如果您使用openpyxl
读取一个或多个列,这是以前答案的替代方法import openpyxl
wb = openpyxl.load_workbook('origin.xlsx')
first_sheet = wb.get_sheet_names()[0]
worksheet = wb.get_sheet_by_name(first_sheet)
#here you iterate over the rows in the specific column
for row in range(2,worksheet.max_row+1):
for column in "ADEF": #Here you can add or reduce the columns
cell_name = "{}{}".format(column, row)
worksheet[cell_name].value # the value of the specific cell
... your tasks...
我希望这很有用。
答案 1 :(得分:7)
使用openpyxl
link = somelink.pdf
puts link.to_s.include?(".pdf")
答案 2 :(得分:2)
我认为要简单得多
from openpyxl import Workbook, load_workbook
wb = load_workbook("your excel file")
source = wb["name of the sheet"]
for cell in source['A']:
print(cell.value)
答案 3 :(得分:1)
我建议使用pandas库。
import pandas as pd
dataFrame = pd.read_excel("/home/ilissa/Documents/AnacondaFiles/AZ_Palmetto_MUSC_searchterms.xlsx", sheetname = "PrivAlert Terms", parse_cols = 0)
如果您对pandas感到不舒服,或者出于任何原因需要使用openpyxl,则代码中的错误是您不是只选择第一列。您显式调用每行中的每个单元格。如果您只想要第一列,那么只获取每一行的第一列。
for row in sheet_ranges.iter_rows(row_offset=1):
print(row[0].value)
答案 4 :(得分:1)
使用ws.get_squared_range()
精确控制返回的单元格范围,例如单个列。
答案 5 :(得分:1)
这是一个简单的功能:
import openpyxl
def return_column_from_excel(file_name, sheet_name, column_num, first_data_row=1):
wb = openpyxl.load_workbook(filename=file_name)
ws = wb.get_sheet_by_name(sheet_name)
min_col, min_row, max_col, max_row = (column_num, first_data_row, column_num, ws.max_row)
return ws.get_squared_range(min_col, min_row, max_col, max_row)
答案 6 :(得分:1)
使用openpyxl库和Python的列表推导概念:
import openpyxl
book = openpyxl.load_workbook('testfile.xlsx')
user_data = book.get_sheet_by_name(str(sheet_name))
print([str(user_data[x][0].value) for x in range(1,user_data.max_row)])
这是非常了不起的方法,值得一试
答案 7 :(得分:0)
使用ZLNK的出色响应,我创建了这个使用列表理解的功能,在一行中获得相同的结果:
def read_column(ws, begin, columns):
return [ws["{}{}".format(column, row)].value for row in range(begin, len(ws.rows) + 1) for column in columns]
然后,您可以通过传递工作表,要开始的行以及要返回的任何列的第一个字母来调用它:
column_a_values = read_column(worksheet, 2, 'A')
要返回A列和B列,呼叫将更改为:
column_ab_values = read_column(worksheet, 2, 'AB')