背景:具有3列和大约10,000行的Excel文件。列:名称,地址和电子邮件。对应数据的行。
尝试以下代码来提取excel文件中的每个条目,并使用人名保存在单独的文件中。就像一张“名片”。
.txt
文件已生成,但它们为空-即文件中没有写入数据。
代码哪里出了问题,我该如何解决?
import openpyxl as opx
from openpyxl import load_workbook
fileName = r'\...\Name Extraction Text files\TestBook.xlsx'
sheetName = "Sheet1"
wb2 = load_workbook(fileName)
ws4 = wb2["Sheet1"]
maxRows = sheet.max_row
>>> 10001
maxCol = sheet.max_column
>>> 3
for i in range(1, maxRows + 1):
name = sheet.cell(row=i, column=1).value
outputFile = open(r'\...\ExtractedFiles\{}.txt'.format(name), 'w')
for j in range(1, maxCol + 1):
outputFile.write(sheet.cell(row=i, column=j).value + '\n')
outputFile.seek(0)
#checking for the count
print('Written file number: {}'.format(i))
print('Done writing your business cards.')
编辑:首先尝试使用.close()
函数,但给出错误I/O operation on closed file.
,因此尝试使用.seek(0)
。
答案 0 :(得分:0)
我假设您想为每一行创建一个txt文件?您需要先关闭已写入的文件,然后再进行其他操作。
outputFile.close()
您可能还希望为打开功能提供'w +'。
检查一下 https://www.guru99.com/reading-and-writing-files-in-python.html
添加:
for i in range(1, maxRows + 1):
name = ws4.cell(row=i, column=1).value
outputFile = open('test{}.txt'.format(name), 'w+')
for j in range(1, maxCol + 1):
outputFile.write(ws4.cell(row=i, column=j).value + "\n")
outputFile.close()
答案 1 :(得分:0)
第二个forloop在第一个循环之外。它必须在第一个forloop中。