- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 xlrd 嗅探目录结构并提取电子表格,读取第二行(第 1 行)以“做事”。问题是我不知道如何在第一个空行停止读取/打印。我知道行不是“空”对象,但我希望能为您提供一点帮助来说明如何检查所有单元格是否为空。这是我正在使用的代码:
import xlrd
import os
def excel_file_filter(filename, extensions=['.xls', '.xlsx']):
return any(filename.endswith(e) for e in extensions)
def get_filenames(root):
filename_list = []
for path, subdirs, files in os.walk(root):
for filename in filter(excel_file_filter, files):
filename_list.append(os.path.join(path, filename))
return filename_list
spreadsheets = get_filenames('C:\\Temp')
for s in spreadsheets:
with xlrd.open_workbook(s) as wb:
cs = wb.sheet_by_index(0)
num_cols = cs.ncols
for row_index in range(1, cs.nrows):
print('Row: {}'.format(row_index))
for col_index in range(0, num_cols):
cell_object = cs.cell(row_index, col_index)
if cell_obj is not xlrd.empty_cell:
print('Col #: {} | Value: {}'.format(col_index, cell_obj))
最终发生的是,它打印了将近 1000 行,而只有第一个说,25 行中有内容。电子表格之间的内容量各不相同,因此,如果有一个通用解决方案(不依赖于其他可选库)可以帮助我了解如何检测空行然后中断,我们将不胜感激。
最佳答案
首先: 要获取单元格值然后检查它是否为空,请使用问题 How to detect if a cell is empty when reading Excel files using the xlrd library? 的答案中解释的方法之一。
cell_val= cs.cell(row_index, col_index).value
获取值时:
if cell_vel == ''
cell_object = cs.cell(row_index, col_index)
获取值时:
cell_type = cs.cell_type(row_index, col_index)
if cell_type == xlrd.XL_CELL_EMPTY
第二:要检查整行是否为空,您可以执行以下操作:
代码:
# define empty_cell boolean
empty_cell= False
with xlrd.open_workbook(s) as wb:
cs= wb.sheet_by_index(0)
num_cols= cs.ncols
num_rows= cs.nrows
for row_index in range(1, num_rows):
# set count empty cells
count_empty = 0
print('Row: {}'.format(row_index))
for col_index in range(0,num_cols):
# get cell value
cell_val= cs.cell(row_index, col_index).value
# check if cell is empty
if cell_val== '':
# set empty cell is True
empty_cell = True
# increment counter
count_empty+= 1
else:
# set empty cell is false
empty_cell= False
# check if cell is not empty
if not empty_cell:
# print value of cell
print('Col #: {} | Value: {}'.format(col_index, cell_val))
# check the counter if is = num_cols means the whole row is empty
if count_empty == num_cols:
print ('Row is empty')
# stop looping to next rows
break
注意:我用第一种方法cell_val= cs.cell(row_index, col_index).value
来获取单元格的值,我看比较简单。如果您想使用其他方法,请更改以下内容:
cell_val= cs.cell(row_index, col_index) # remove .value
cell_type= cs.cell_type(row_index, col_index) # add this line
# check if cell is empty
if cell_type == xlrd.XL_CELL_EMPTY: # change if cell_val== '':
帮助我了解如何检查单元格是否为空的其他链接:
xlrd.XL_CELL_EMPTY和 Validating a cell value using XLRD
关于python - 如何在第一个空行停止阅读带有 xlrd 的电子表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42843830/
xlrd 模块可以更改文件属性吗?如作者、标题、主题等。 我想更改 .xls 文件的属性,但不知道该怎么做。 最佳答案 据我所知,xlrd 是不可能的. rd名称的一部分表示“只读”。您需要使用 xl
我正在尝试使用 xlrd 操作 .xls 文件,如下所示: >>> import xlrd >>> workbook = xlrd.open_workbook('6h.xls') 我得到: Trace
我想将一个 excel 范围分配给一个变量: import xlrd file = r"C:\Users\Lisa\Desktop\Frank\export.XLSX" book = xlrd.ope
import xlrd wb = xlrd.open_workbook("file.xls") wb.sheet_names() sh = wb.sheet_by_index(0) for item
根据XLRD模块的文档, row_values(rowx, start_colx=0, end_colx=None) “返回给定行中单元格值的一部分。” 并给出以下 python 代码: impor
我有特定结构的 exel 文件。第一行是标题,第二行是名称,最后一行是值。我只需要标题和值,如果 Excel 文件只有 3 行,这并不难,但它可以是 100 行和列,我只需要获取标题和值,而不是任何名
我正在尝试编写一个 python 程序,用于使用 xlrd 和 xlwt 将 csv 文件中的实时股票报价附加到 excel 文件(已打开)。 任务概述如下。 从我的股票经纪人应用程序中,我的硬盘上不
嗨,我刚刚拿起 xlrd。关于访问工作表和单元格属性,我指的是Xlrd Column 那里的代码显示。 for crange in thesheet.col_label_ranges: rlo
我有一个脚本,如果我传递文件名,我就可以打开文件,但现在文件的数量正在增加,并且必须在每个文件上单独运行该脚本是没有意义的。所以我决定让python读取目录中的所有文件。 for root, dirs
我有一个具有以下结构的电子表格(数据从 B 列开始。A 列为空) A B C D Name city salary J
我正在使用 xlrd 和 python 来提取 Excel 数据,一切都很好,数据提取也很好,但代码只提取最后一行数据。 这是我的 Excel +-------------------+-------
我是 python 的新手,我正在尝试读取 .xls 文件并查看每行的第一列以查看它是否与我的变量匹配。我不确定我做错了什么,希望有人可以帮助我。我的最终目标是找到第一列中以此变量开头的每一行,然后删
我在 API 中找不到任何内容。有没有办法根据字符串匹配返回单元格的行号或坐标?例如:您给脚本一个字符串,它会扫描整个 .xls 文件,当它找到具有匹配字符串的单元格时,它会返回坐标或行号。 最佳答案
在 Python 中使用 XLRD 从 Excel 中读取。 简单的场景。我有一个带有值的单元格,它与命名范围相关联。 NamedRange "Foo"= Sheet1!$A$1A1中的值为“Bar”
有没有办法处理程序中的xlrd错误?我对数以千计的 excel 文件有一个复杂的问题。我正在尝试解析文件列表,打开每个电子表格并确定电子表格是否具有特定的选项卡或工作表。使用匹配的工作表名称创建一个新
我正在尝试从 xls 文件中读取一个长数字 (6425871003976),但 python 在将其读取为数字而不是字符串 (6.42587100398e+12) 之前一直在中继它。有什么方法可以直接
我正在使用 xlrd 读取 xls 文件。问题是,当 xlrd 读取这样的值时 "12/09/2012",我得到这样的结果 "xldate:41252.0"。当我使用 xlrd.xldate_as_t
我在 xlrd 中从 Excel 中读取特定单元格值时遇到困难。我正在读取的任何值(日期值)都将转换为数字。我知道有将其转换为 python 日期格式的解决方案,但我可以直接读取 xlrd 中的字符串
我使用 pip3 install 安装了 pandas 和 matplotlib。然后我运行了这个脚本: import pandas as pd import matplotlib.pyplot as
先用xlrd读excel文件--》book对象a 拿到指定的sheet页 xlrd对象 用xlutils copy 的copy方法复制 a得到b 通过判断a的列值,来修改b 保存b 得到结果
我是一名优秀的程序员,十分优秀!