python - Python:在 Excel 中将列表写入一行
问题描述
我正在尝试从文本文件中读取数据,创建一个包含该文本文件中所有内容的长字符串,然后将其按空格分割。然后,我尝试将该列表按空格分割发送到printStringArray
并打印到 Excel 工作表。我无法弄清楚如何跟踪数据应输入的行和列。
rowNum = 1
def createStringArray(theFilePath):
theFinalString = ""
with open(theFilePath) as file_in:
for line in file_in:
lineToString = str(line)
theCompleteString = lineToString.split()
printStringArray(theCompleteString)
def printStringArray(theStringArray):
with xlsxwriter.Workbook('testingThis.xlsx') as workbook:
worksheet = workbook.add_worksheet()
colNum = 1
global rowNum
for data in theStringArray:
worksheet.write(rowNum, colNum, data)
colNum = colNum + 1
rowNum = rowNum + 1
编辑:
def printStringArray(theStringArray):
with xlsxwriter.Workbook('testingThis.xlsx') as workbook:
worksheet = workbook.add_worksheet()
colNum = 0
global rowNum
for data in theStringArray:
worksheet.write(rowNum, colNum, str(data))
print(rowNum)
print(colNum)
print(data)
colNum = colNum + 1
rowNum = rowNum + 1
我添加了一些prints
以查看哪里出错了,但是所有数字都正是我希望它们用于rowNum
、colNum
和data
的。现在它只打印最后一行。
编辑#2
rowNum = 0
with xlsxwriter.Workbook('testingThis.xlsx') as workbook:
worksheet = workbook.add_worksheet()
def createStringArray(theFilePath):
theFinalString = ""
with open(theFilePath) as file_in:
for line in file_in:
lineToString = str(line)
theCompleteString = lineToString.split()
printStringArray(theCompleteString)
for aString in theCompleteString:
theFinalString = theFinalString + aString + "--"
print(theFinalString)
def printStringArray(theStringArray):
colNum = 0
global rowNum
worksheet.write(15, 15, "Aapple")
for data in theStringArray:
worksheet.write(rowNum, colNum, str(data))
print(rowNum)
print(colNum)
print(data)
colNum = colNum + 1
rowNum = rowNum + 1
解决方案
这是我读取文本文件并将内容写入 Excel 工作表的尝试,也许这会有所帮助。
我使用write_row()函数将字符串列表写入一行。这样我就不需要照顾正确的列号。
import xlsxwriter
# read textfile line by line
with open(path2txt, 'r') as txtfile:
lines_raw = txtfile.readlines()
# remove newline and whitespace on every line
lines = [line.strip() for line in lines_raw]
# write lines to worksheet,
# here we use "write_row()" to write the list of words column by column
with xlsxwriter.Workbook('test.xlsx') as workbook:
sheet = workbook.add_worksheet()
row, col = 0, 0
for line in lines:
parts = line.split()
if len(parts)>0: # only write nonempty lines
sheet.write_row(row, col, parts)
row += 1
推荐阅读
- mysql - MySQL 从测验中获得测验分数,问题有多个正确答案
- azure-devops - Azure 管道并行选项
- algorithm - heapify VS 构建堆
- javascript - 从另一个函数返回一个函数是什么意思?
- android - 在 Android 中重用相同的选项卡活动
- c# - 通过证书签署 PDF 文档
- java - 如何制作单个类的jar文件?
- machine-learning - 将因变量的预测值分解为一个截距(基线),并将其余部分归因于自变量。MLI 方法
- forms - 如何在 Symfony 5 中为多个页面构建相同的表单?
- azure - Azure Devops - YAML 发布管道 - 如何使用下拉列表从构建管道中选择特定工件