从Excel(.xlsx)中提取并写入.txt文件

时间:2019-08-16 12:11:28

标签: excel python-3.x extract data-extraction

背景:具有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)

2 个答案:

答案 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中。