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



我有两个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 时,它会创建"demo.xlsx",其中没有任何内容。Excel 文件为空,这意味着它不会按预期将 an[] 导入到 excel 文件。

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

问题不在于"使用另一个文件中的函数">

Excel 文件为空,这意味着它不会按预期将 an[] 导入到 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 文件,而单元格中没有数据。

您正在尝试导入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

最新更新