gpt4 book ai didi

python - 尝试替换我从 xlrd 创建的 sheet.row 列表中的值

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:08 24 4
gpt4 key购买 nike

我导入了一个 Excel 电子表格,我试图用默认值清理电子表格中所有行中的空值。我不需要更新电子表格,我只需要设置默认值,因为我正在使用这些信息插入本地数据库。每当我尝试这样做时,它都不会得到正确处理。这是我对代码的原始迭代:

for root,dirs,files in os.walk(path):
xlsfiles=['1128CNLOAD.xlsx']
#xlsfiles=[ _ for _ in files if _.endswith('CNLOAD.xlsx') ]
print (xlsfiles)
for xlsfile in xlsfiles:
book=xlrd.open_workbook(os.path.join(root,xlsfile))
sheet=book.sheet_by_index(0)
cell=sheet.cell(1,1)
print (sheet)

sheet0 = book.sheet_by_index(0)
#sheet1 = book.sheet_by_index(1)

for rownum in range(sheet0.nrows):
print sheet0.row_values(rownum)

values=()

print sheet0.nrows

for row_index in range(1, sheet.nrows):
if sheet.cell(row_index,4).value == '':
sheet.cell(row_index,4).value = 0.0
print sheet.row(row_index)

代码吐出没有返回任何错误,但没有任何更新,我尝试更新的单元格仍然是空的。

我还尝试将循环更改为仅对列表进行值替换,如下所示:

                for row_index in range(1, sheet.nrows):
if sheet.row(1)[4] == "empty:''":
sheet.row(1)[4] = "number:0.0"

运行此更新后打印时,列表没有改变。

print(sheet.row(1))

[text:u'FRFHF', text:u' ', number:0.15, number:0.15, empty:'', empty:'', number:2.5, number:2.5, empty:'', empty: '']

感谢您的帮助,如果您有任何问题,请告诉我。

最佳答案

xlrd 并没有真正设置为在您将电子表格存入内存后对其进行编辑。你可以做到,但你必须使用未记录的内部实现。

在我的版本 (0.7.1) 上,单元格在工作表内部存储在几个不同的二维数组中 - sheet._cell_typessheet._cell_values是主要的两个。这些类型由 biffh.py 中的一组常量定义,xlrd 模块导入。当您调用 cell 时,它会使用为给定行/列对查找的值和类型构造一个新的 Cell 实例。您可以直接更新它们,也可以使用 put_cell 方法。

所以看起来这样可行:

if sheet.cell_type(1, 4) == xlrd.XL_CELL_EMPTY:
sheet._cell_types[1][4] = xlrd.XL_CELL_NUMBER
sheet._cell_values[1][4] = 0.0

或者:

if sheet.cell_type(1, 4) == xlrd.XL_CELL_EMPTY:
sheet.put_cell(1, 4, xlrd.XL_CELL_NUMBER, 0.0, sheet.cell_xf_index(1, 4))

如果您使用的是不同的版本,您可能需要检查代码以确保这没有改变。

关于python - 尝试替换我从 xlrd 创建的 sheet.row 列表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20151800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com