2016-02-12 83 views
4

我对python很陌生,我正在用Tkinter编写一个程序,它可以让我在另一个excel文件中写入东西,而无需打开Excel文件。Xlsxwriter Python中的字符串变量Python

从Tkinter的,我添加了一个输入框我会写一个值,和一个按钮,即会使用xlsxwriter写的Excel格式内的值。

我已经试过

name_entry = StringVar() 
    name_get = name_entry.get() 
    e1 = Entry(root, textvariable = name_entry) 
    b1 = Button(root, text = "Create") 
    e1.pack() 
    b1.bind("<Button-1>", create) 
    b1.pack() 

“创造”是

def create(event): 
     workbook = xlsxwriter.Workbook(0, "2016" + str(name_get)) 
     worksheet = workbook.add_worksheet() 
     worksheet.write(0, 0, 'name') 
     worksheet.write(1, 0, str(name_get)) 
     workbook.close 

当我运行该程序,并在入境写东西,然后按 按钮(B1)的功能,Excel文件它创建只有在“名称”写在 行= 0和列= 0,但我没有在我行的输入框中写的名字= 1分,列= 0。此外,所创建的名称文件将只保存为“2016”,而不是“2016”+ str(name_get),该值我已经写在输入框中了。

除此之外,该程序没有

如何我已经写在输入框中的值将在Excel中的写入文件的任何错误

另外,是否有可能在xlsxwriter中创建excel文件(例如.csv文件)的扩展名?

非常感谢你阅读我的问题,我会真正体会到了一些建议!

+0

'Button'有'命令='所以你不需要'bind' – furas

+0

我不跟'xlsxwriter'模块熟悉,但也许如果你尝试更换'STR(name_get)''通过str(type(name_get))'你将得到在Excel表单中打印的对象的类型。这是有用的信息,您可以用来搜索更多信息。 – SebasSBM

+0

你必须在函数中使用'name_entry.get()'。 'name_get'不能像你期望的那样工作 - 它只保留'name_entry.get()'在开始时执行的值(当'Entry'为空时) – furas

回答

0

可能还有其他的问题,但此行是不正确的:

workbook = xlsxwriter.Workbook(0, "2016" + str(name_get)) 

Workbook constructor takes the parameters:Workbook(filename[, options])

所以该行也许应该是:

workbook = xlsxwriter.Workbook("2016" + str(name_get)) 

而且,是有可能在xlsxwriter中创建一个excel文件的扩展名(例如.csv文件)?

XlsxWriter只创建XLSX文件和输出文件的扩展名应该是.xlsx或者当它打开该文件,Excel将抱怨。