使用另一个文件中的函数使用xlsx写入excel

时间:2018-04-06 05:30:59

标签: python excel xlsx

我有两个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文件。

我想知道是否有人知道问题是什么?

2 个答案:

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