Python Xlrd和Xlwt
我在旧Excel表格中有以下内容: 我需要生成具有以下值的新Excel工作表: 在输入Excel文件的第3列中,我有一个范围Python Xlrd和Xlwt,python,Python,我在旧Excel表格中有以下内容: 我需要生成具有以下值的新Excel工作表: 在输入Excel文件的第3列中,我有一个范围10010-10040和一个增量值10。这需要在我的新Excel文件中展开 如果我在两个值之间加一个逗号(,),则应将其视为单独的值并展开。(如第2行第3列所示) 我不知道如何做到这一点,而且我是Python新手。试试下面的方法。这使用xlrd和xlwt库来读写xls电子表格: import xlrd import xlwt wb_in = xlrd.open_wor
10010-10040
和一个增量值10
。这需要在我的新Excel文件中展开
如果我在两个值之间加一个逗号(,),则应将其视为单独的值并展开。(如第2行第3列所示)
我不知道如何做到这一点,而且我是Python新手。试试下面的方法。这使用
xlrd
和xlwt
库来读写xls
电子表格:
import xlrd
import xlwt
wb_in = xlrd.open_workbook(r'input.xls')
sheet_name = wb_in.sheet_names()[0]
ws_in = wb_in.sheet_by_name(sheet_name)
wb_out = xlwt.Workbook()
ws_out = wb_out.add_sheet(sheet_name) # Use the same sheet name
row_out = 0
for row_in in range(ws_in.nrows):
row = ws_in.row_values(row_in)
if isinstance(row[2], float):
req_spec = str(int(row[2]))
else:
req_spec = row[2]
req_range = req_spec.split('-')
req_enum = req_spec.split(',')
if len(req_range) > 1: # e.g. 10010-10040-10
for value in range(int(str(req_range[0])), int(str(req_range[1])) + 1, int(str(req_range[2]))):
ws_out.write(row_out, 0, row[0])
ws_out.write(row_out, 1, row[1])
ws_out.write(row_out, 2, str(value))
row_out += 1
elif len(req_enum) > 1: # e.g. 1010,1020
for value in req_enum:
ws_out.write(row_out, 0, row[0])
ws_out.write(row_out, 1, row[1])
ws_out.write(row_out, 2, value)
row_out += 1
else: # e.g. 10100
ws_out.write(row_out, 0, row[0])
ws_out.write(row_out, 1, row[1])
ws_out.write(row_out, 2, req_spec)
row_out += 1
wb_out.save('output.xls')
不幸的是,如果您不熟悉Python,那么有很多东西需要学习
该脚本通过创建输入工作簿和输出工作簿来工作。对于输入中的每一行,它假定您将始终有3列,并且第三列包含三种指定类型中的一种。它根据是否存在-
或,
来决定使用哪个。然后,它根据该范围将行写入输出
注意,在中读取文件时,
xlrd
尝试猜测单元格的格式。对于大多数条目,它会猜测字符串格式,但有时会错误地猜测浮点数。脚本对此进行测试,并将其转换为字符串以确保一致性。另外,xlrd
使用unicodeu“xxx”
格式存储字符串。需要将这些值转换为数字,以便能够计算所需的范围。您需要使用字符“-”作为除法来分隔值“10010-10040-10”(“initNumber FinalNumber Increment”)。然后,您可以执行for循环(或类似的操作),其中增量为“增量”,从“initNumber”开始,到“FinalNumber”结束。在您的循环中,您将“Ex”+iterationNumber连接起来以获得Ex1、Ex2、。。。。对于第三列,您可以有一个从“initNumber”开始并在每个循环中添加“Increment”的变量。您正在处理旧的xls
文件吗?还是更新的xlsx
文件?这些库设计用于旧格式。嗨,Martin。。我使用新的xlsx文件作为输入文件。xlrd使用它。输出文件是旧格式的xls文件。谢谢Martin。。。它帮了我很多。。。!