nrows python_sheet.nrows有一个错误的值 – python excel文件

我有一个非常奇怪的问题.我正在尝试从excel文件中读取一些数据,但属性nrows的值不正确.虽然我的文件有很多行,但它只返回2.

我在pydev eclipse工作.我不知道究竟是什么问题;一切都很好.

当我尝试通过索引手动访问其他行时,但我得到了索引错误.

我感谢任何帮助.

如果它有帮助,那就是我的代码:

def get_data_form_excel(address):

wb = xlrd.open_workbook(address)

profile_data_list = []

for s in wb.sheets():

for row in range(s.nrows):

if row > 0:

values = []

for column in range(s.ncols):

values.append(str(s.cell(row, column).value))

profile_data_list.append(values)

print str(profile_data_list)

return profile_data_list

要确保您的文件没有损坏,请尝试使用其他文件;我怀疑xlrd是否有缺陷.

此外,我已经清理你的代码看起来更好一点.例如,if行> 0检查是不必要的,因为你可以在第一个位置迭代范围(1,sheet.nrows).

def get_data_form_excel(address):

# this returns a generator not a list; you can iterate over it as normal,

# but if you need a list, convert the return value to one using list()

for sheet in xlrd.open_workbook(address).sheets():

for row in range(1, sheet.nrows):

yield [str(sheet.cell(row, col).value) for col in range(sheet.ncols)]

要么

def get_data_form_excel(address):

# you can make this function also use a (lazily evaluated) generator instead

# of a list by changing the brackets to normal parentheses.

return [

[str(sheet.cell(row, col).value) for col in range(sheet.ncols)]

for sheet in xlrd.open_workbook(address).sheets()

for row in range(1, sheet.nrows)

]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用Python中的数据库连接库(如MySQLdb、pymysql等)将循环中获取的数据保存到数据库中。首先,您需要在代码中导入相应的数据库连接库,并建立与数据库的连接。然后,在循环中获取到的数据处,将数据插入到数据库中。 以下是一个示例代码: ```python import xlrd import pymysql # 建立与数据库的连接 conn = pymysql.connect(host='localhost', user='root', password='password', database='your_database') cursor = conn.cursor() # 打开Excel文件 workbook = xlrd.open_workbook("C:\\Users\\FangYingge\\Desktop\\FP510D206_高温.xls") sheet_cali = workbook.sheet_by_index(1) num = sheet_cali.nrows sheet_NW = workbook.sheet_by_index(0) num1 = sheet_NW.nrows for row in range(2, num): if sheet_cali.cell(rowx=row, colx=0).value != "": data1 = sheet_cali.row_values(row, 0, 6) # 将data1的数据插入数据库 cursor.execute("INSERT INTO your_table (column1, column2, column3, column4, column5, column6) VALUES (%s, %s, %s, %s, %s, %s)", data1) else: pass for row1 in range(2, num1): if sheet_NW.cell(rowx=row1, colx=9).value != "": print(row1, sheet_NW.cell(rowx=row1, colx=9).value, "通道") data3 = sheet_NW.row_values(row1, 15, 18) data2 = sheet_NW.row_values(row1, 2, 9) test_lx = data2[0] print(test_lx) if test_lx == 'IL': fre = 1 result = 2 state = 3 row1 -= 2 if test_lx == 'IL_Var': fre = 2 result = 3 state = 4 row1 -= 2 if test_lx == 'GD': fre = 3 result = 4 state = 5 row1 -= 2 # 将fre、result、state等数据插入数据库 cursor.execute("INSERT INTO your_table (column7, column8, column9) VALUES (%s, %s, %s)", (fre, result, state)) # 提交事务并关闭数据库连接 conn.commit() cursor.close() conn.close() ``` 请根据您的实际情况修改代码中的数据库连接参数、表名和列名,以及插入数据的SQL语句。注意,在插入数据时,需要根据数据类型使用相应的占位符(如%s、%d等)。 这样,循环中获取的数据就会保存到数据库中了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值