2

嗨,我是 python 新手,正在尝试一些代码来简化我的工作。所以这是我的代码

 counter = 0
 while True:

    row_values = worksheet.row_slice(counter+1,start_colx=0, end_colx=4)

    row['Dealer'] = int(row_values[0].value)
    row['Name'] = str(row_values[1].value)
    row['City'] = str(row_values[2].value)

    counter += 1

    if not row['Dealer']:
        break

当 row['Dealer'] 为空时,我试图打破 while 循环,即到达 excel 文件的结尾。但它似乎并没有以某种方式工作。它不断给出IndexError: list index out of range。一些帮助将不胜感激。谢谢

嗨,我将代码编辑为以下内容:

   counter = 0
   while True:
    row_values = worksheet.row_slice(counter+1,start_colx=0, end_colx=30)
    row['gg'] = worksheet.cell_value(1+counter,1).strip()
    if not row['gg']:
        break


    row['Dealer'] = int(row_values[0].value)
    row['Name'] = str(row_values[1].value)
    row['City'] = str(row_values[2].value) 
    counter += 1

但是错误还是一样!帮助将不胜感激。

4

2 回答 2

1

pandas 库是使用 Excel 的绝佳选择。

使用 pip 安装 pandas。

pip install pandas

安装 xlrd(处理 Excel 文件时需要)。

pip install xlrd

从那里您可以阅读带有以下内容的 excel 电子表格。

import pandas as pd
df = pd.read_excel('your_excel.xlsx')

df 现在是一个 DataFrame 对象。您可以使用可用的 pandas 工具分析和转换数据。read_excel()的完整文档。

于 2017-09-04T18:09:29.000 回答
0

问题:当 row['Dealer'] 为空时,即到达 excel 文件末尾时,打破 while 循环。

您可以使用 获得 Rows 的结尾worksheet.nrows,例如:

import xlrd 
book = xlrd.open_workbook("myfile.xls") 
sh = book.sheet_by_index(0) 
print("Sheetname:{0} Rows:{1} Columns:{2}".
    format(sh.name, sh.nrows, sh.ncols)) 

# Iterate all Rows
row_value = {}
for rx in range(sh.nrows): 
    print(sh.row(rx))
    row_value['Dealer'] = sh.cell_value(rowx=rx, colx=0)
    row_value['Name'] = sh.cell_value(rowx=rx, colx=1)
    row_value['City'] = sh.cell_value(rowx=rx, colx=2)

    # Break before end of Rows at first Empty Cell
    if row_value['Dealer'] == '':
        break
于 2017-09-06T07:23:58.727 回答