使用 Python 3 的 xlwings 问题

Posted

技术标签:

【中文标题】使用 Python 3 的 xlwings 问题【英文标题】:xlwings issue using Python 3 【发布时间】:2016-05-04 21:03:45 【问题描述】:

我正在制作一个类似于数据库的 python 3 程序,它将tkinter 条目保存到一个 excel 文件中。我真的很喜欢使用xlwings,所以请使用xlwings 找到解决方案。无论如何,这是问题:

from tkinter import *
import xlwings as xw    
def save() :
    entrylist = [entry1.get(), entry2.get(), entry3.get(), entry4.get(), entry5.get(), 
    entry6.get(), entry7.get(), entry8.get(), entry9.get()]

        if len(entrylist[i]) != 0 and entry2.get() == entry3.get():
            teller = int(xw.Range('M1').value) + 1

            for i in range(0,3):
                rowlist = ["A"+ str(teller), "B"+ str(teller), "C"+str(teller), "D"+str(teller)]
                rowcode = "\'"+ rowlist[i] + "\'"
                xw.Range(rowcode).value = entrylist[i]

        xw.Range('M1').value = teller
        wb.save('klantendatabase.xlsx')

现在的问题是下面这段代码是不允许的:

xw.Range(rowcode).value = entrylist[i]

仅允许这样(A1 是 excel 文件中的示例单元格编号)::

xw.Range('A1').value = entrylist[i]

有没有办法让xw.Range().value 接受一个变量?

【问题讨论】:

【参考方案1】:

确保将您的服务设置为在 https 设置而不是 http 上运行。通常端口 8080 是最可靠的安全性。之后以调试模式运行您的代码并从您的源代码运行数据库差异。这应该处理所有日志消息。

【讨论】:

对不起,我不是这个意思。【参考方案2】:

您不需要用引号将rowcode 括起来,它们已经是字符串。这有效:

import xlwings as xw

wb = xw.Workbook()
rowcode = 'A1'
xw.Range(rowcode).value = 'some value'

虽然在您的情况下使用这样的索引可能更容易:xw.Range((i,j)).value

【讨论】:

以上是关于使用 Python 3 的 xlwings 问题的主要内容,如果未能解决你的问题,请参考以下文章

python操作excel之xlwings

xlwings (python) - 如何激活工作表?

(转)Python与Excel交互——Xlwings

python xlwings(一) 获取sheet名及个数

使用xlwings在excel中的函数调用之间保留python全局变量

通过 python 中的 xlwings 调整 Excel 中的数字格式