我有两个python文件:
1- writerCode.py:
import xlsxwriter
workbook = xlsxwriter.Workbook('demo.xlsx')
ws = workbook.add_worksheet()
def writeTo(x,y,array):
j = 0
while j < (len(array)):
ws.write(x,y,array[j])
j +=1
x +=1
return;
workbook.close()
2- testingCode.py:
from writerCode import *
an = ['123','234','123','432','123']
writeTo(0,0,an)
我想将[]项目导入excel。
当我运行testingCode.py时,它会创建带有NOTHING的'demo.xlsx'。 excel文件为空,表示它不会按预期将[]导入excel文件。
我想知道是否有人知道问题是什么?
答案 0 :(得分:2)
问题不在于&#34;使用其他文件中的功能&#34;
excel文件为空,表示它不会按预期将[]导入excel文件。
这也可能意味着控制Excel的代码部分无效。
test2.py:
def mydef(d):
print(d)
test.py:
from test2 import *
data = "hello"
mydef(data)
结果
hello
所以不是那样。
您打开工作簿后可能正在关闭工作簿。 除函数外,所有代码都在导入时运行。
丑陋的快速修复(重构代码):
workbook.close()
调用writeTo()
之后。
<小时/> 写入已关闭的工作簿/工作表时,
xlsxwriter
应该引发异常,但它不会:
import xlsxwriter
workbook = xlsxwriter.Workbook('demo.xlsx')
ws = workbook.add_worksheet()
workbook.close()
ws.write(0,0,"hello")
确实会导致单元格中没有数据的有效XSLX文件。
答案 1 :(得分:1)
您正尝试在
testingCode.py
中导入已关闭的工作簿,但您无法写入已关闭的工作簿。
所以,将workbook.close()
替换为testingCode.py
。这样,您在调用函数writeTo(x, y, array)
后关闭工作簿。
并尝试使用for
循环,因为while
循环有效但会使您的代码看起来有点复杂。并通过在,
之后添加空格使您的代码看起来整洁。这些空间使您的代码更具可读性。
def writeTo(x, y, array):
for item in (array):
ws.write(x, y, item)
x += 1