使用 python 将内容从 .txt 文件存储到 .xlsx 时出错
Error when storing content from a .txt file to a .xlsx using python
我是一名新程序员,目前正在尝试为更大的东西创建示例代码。我 google 解决了大部分问题,但找不到 "final" 问题的任何答案,所以我决定 post 它。
此代码基本上是打开 Excel 文件、获取特定列的数据、编辑数据并将其保存到名为 "Saved.txt" 的文本文件中的代码。代码到这里为止都很好用。我的问题是当我试图将所有数据逐行上传到另一个 Excel 文件时。请帮帮我!
import openpyxl
from openpyxl import Workbook
Code = "0507"
Save = open("Saved.txt","a")
#Reading from XLSX and writing into a TEXT FILE after appending the data.
fname = 'Wekanda 2.xlsx'
wb = openpyxl.load_workbook(fname)
sheet = wb.get_sheet_by_name('Wekanda 2')
for rowOfCellObjects in sheet['R2':'R282']:
for cellObj in rowOfCellObjects:
line_w = cellObj.value
line_w = str(line_w)
line_w = line_w.replace(" ","@")
Save.write("\n"+Code+line_w)
test = str(line_w)
Save.close()
This code works perfectly till here.
#Storing into Excel!
book = Workbook()
sheet = book.active
with open("Saved.txt","r") as f:
for line in f:
for i in range(1,281):
Pointer = "A"+str(i)
sheet[Pointer] = line
book.save("Next.xlsx")
输出
- EXCEL 文件 |文本文件 |输出文件
- 50 B2-3/3 | 050750@B2-3/3 | 050715
- 50 B2-3/4 | 050750@B2-3/4 | 050715
- 50 B2-3/5 | 050750@B2-3/5 | 050715
我希望文本文件中的内容与输出文件中的内容完全相同。
文本文件中的内容。
- 050730
- 050740
- 050740A
- 050740B
- 050740-1/1
- 050740-1/2
- 050740-2/1
- 050740-2/2
- 050740-3/1
- 050740-3/2
- 050740-4/1
- 050740-4/2
我假设你现在已经找到了问题,但我想我还是会在这里给出答案(这样我们就可以开始清空论坛中未回答的问题)。
您正在创建大量单元格,然后为这些单元格分配相同的值,即行。我假设您在输出中看到的值是完整值列表的一部分?作为旁注,我可能会补充说,您使用的是范围内的硬编码值,应尽可能避免。
作为初学者,我冒昧地提出一个可能更好的解决方案。
with open("Saved.txt","r") as f:
for i, line in enumerate(f):
Pointer = "A{}".format(i+1)
sheet[Pointer] = line
有关枚举函数的更多详细信息,请查看官方文档here。基本上它为每个元素提供一个从零开始的索引值。
编辑:不小心将 str() 保留在 i.
周围
我是一名新程序员,目前正在尝试为更大的东西创建示例代码。我 google 解决了大部分问题,但找不到 "final" 问题的任何答案,所以我决定 post 它。
此代码基本上是打开 Excel 文件、获取特定列的数据、编辑数据并将其保存到名为 "Saved.txt" 的文本文件中的代码。代码到这里为止都很好用。我的问题是当我试图将所有数据逐行上传到另一个 Excel 文件时。请帮帮我!
import openpyxl
from openpyxl import Workbook
Code = "0507"
Save = open("Saved.txt","a")
#Reading from XLSX and writing into a TEXT FILE after appending the data.
fname = 'Wekanda 2.xlsx'
wb = openpyxl.load_workbook(fname)
sheet = wb.get_sheet_by_name('Wekanda 2')
for rowOfCellObjects in sheet['R2':'R282']:
for cellObj in rowOfCellObjects:
line_w = cellObj.value
line_w = str(line_w)
line_w = line_w.replace(" ","@")
Save.write("\n"+Code+line_w)
test = str(line_w)
Save.close()
This code works perfectly till here.
#Storing into Excel!
book = Workbook()
sheet = book.active
with open("Saved.txt","r") as f:
for line in f:
for i in range(1,281):
Pointer = "A"+str(i)
sheet[Pointer] = line
book.save("Next.xlsx")
输出
- EXCEL 文件 |文本文件 |输出文件
- 50 B2-3/3 | 050750@B2-3/3 | 050715
- 50 B2-3/4 | 050750@B2-3/4 | 050715
- 50 B2-3/5 | 050750@B2-3/5 | 050715
我希望文本文件中的内容与输出文件中的内容完全相同。
文本文件中的内容。
- 050730
- 050740
- 050740A
- 050740B
- 050740-1/1
- 050740-1/2
- 050740-2/1
- 050740-2/2
- 050740-3/1
- 050740-3/2
- 050740-4/1
- 050740-4/2
我假设你现在已经找到了问题,但我想我还是会在这里给出答案(这样我们就可以开始清空论坛中未回答的问题)。
您正在创建大量单元格,然后为这些单元格分配相同的值,即行。我假设您在输出中看到的值是完整值列表的一部分?作为旁注,我可能会补充说,您使用的是范围内的硬编码值,应尽可能避免。
作为初学者,我冒昧地提出一个可能更好的解决方案。
with open("Saved.txt","r") as f:
for i, line in enumerate(f):
Pointer = "A{}".format(i+1)
sheet[Pointer] = line
有关枚举函数的更多详细信息,请查看官方文档here。基本上它为每个元素提供一个从零开始的索引值。 编辑:不小心将 str() 保留在 i.
周围