请大佬看看这为什么pycharm报错'function' object has no attribute 'copy'
利用copy函数生成新的excel文件,但不知道为啥会报错date = copy.copy(rd_book)
AttributeError: 'function' object has no attribute 'copy'
说函数没有copy属性,但是这只是我利用tk导入的文件目录,然后并想将该文件复制成新的excel文件从而不对源文件进行编辑,这个应该怎么解决?请大佬帮忙忙看看!
python新手写码,有点乱请多多包涵。
# -*- coding:utf-8 -*-
import wx
import os
import re
import xlrd
import xlwt
from xlutils.copy import copy
import tkinter
from tkinter import filedialog
class Frame(wx.Frame):
root = tkinter.Tk()
root.withdraw()
global ml
ml = filedialog.askopenfilename(initialdir='C:', title="请选择xls文件")
def __init__(self):
wx.Frame.__init__(self, None, title='', size=(536, 488),name='frame',style=541072384)
self.启动窗口 = wx.Panel(self)
self.Centre()
self.标签2 = wx.StaticText(self.启动窗口, size=(59, 37), pos=(12, 15), label='销售:', name='staticText', style=2304)
标签2_字体 = wx.Font(11, 74, 90, 400, False, 'Microsoft YaHei UI', -1)
self.标签2.SetFont(标签2_字体)
self.编辑框2 = wx.TextCtrl(self.启动窗口, size=(159, 37), pos=(67, 14), value='', name='xs1', style=0)
编辑框2_字体 = wx.Font(11, 74, 90, 400, False, 'Microsoft YaHei UI', -1)
self.编辑框2.SetFont(编辑框2_字体)
self.编辑框3 = wx.TextCtrl(self.启动窗口, size=(162, 37), pos=(236, 14), value='', name='xs2', style=0)
编辑框3_字体 = wx.Font(11, 74, 90, 400, False, 'Microsoft YaHei UI', -1)
self.编辑框3.SetFont(编辑框3_字体)
self.标签3 = wx.StaticText(self.启动窗口, size=(51, 24), pos=(15, 99), label='客流:', name='staticText', style=2304)
标签3_字体 = wx.Font(11, 74, 90, 400, False, 'Microsoft YaHei UI', -1)
self.标签3.SetFont(标签3_字体)
self.编辑框4 = wx.TextCtrl(self.启动窗口, size=(331, 163), pos=(67, 57), value='', name='kl', style=1073741856)
编辑框4_字体 = wx.Font(11, 74, 90, 400, False, 'Microsoft YaHei UI', -1)
self.编辑框4.SetFont(编辑框4_字体)
self.编辑框5 = wx.TextCtrl(self.启动窗口, size=(331, 204), pos=(67, 228), value='', name='jh', style=1073741856)
编辑框5_字体 = wx.Font(11, 74, 90, 400, False, 'Microsoft YaHei UI', -1)
self.编辑框5.SetFont(编辑框5_字体)
self.按钮2 = wx.Button(self.启动窗口, size=(80, 32), pos=(420, 391), label='生成', name='button')
self.按钮2.Bind(wx.EVT_BUTTON, self.按钮2_按钮被单击)
self.标签5 = wx.StaticText(self.启动窗口, size=(46, 24), pos=(11, 298), label='计划:', name='staticText',
style=2304)
标签5_字体 = wx.Font(11, 74, 90, 400, False, 'Microsoft YaHei UI', -1)
self.标签5.SetFont(标签5_字体)
def 按钮2_按钮被单击(self,event):
xs1 = self.编辑框2.GetValue()
xs2 = self.编辑框3.GetValue()
kl = self.编辑框4.GetValue()
zdgz = self.编辑框5.GetValue()
qdxs1 = xs1.replace(',', '')
qdxs2 = xs2.replace(',', '')
a=round((float(qdxs1)+float(qdxs2))/10000,2)#销售
n1 = kl.replace(',', '')
n = re.findall(r"\d+\.?\d*", n1)
kl1 = n
kl2 = n
kl3 = n
kl4 = n
kl5 = n
kl6 = n
kl7 = n
g = round((int(''.join((str(i) for i in kl1))) + int(''.join((str(i) for i in kl2)))+int(''.join((str(i) for i in kl3)))+int(''.join((str(i) for i in kl4)))+int(''.join((str(i) for i in kl5)))+int(''.join((str(i) for i in kl6)))+int(''.join((str(i) for i in kl7))))/10000,2)
#a为销售数,g为客流数,zdgz为下周计划
#-----------------以下为excel编辑部分--------------------------------------------
#xlrd读取部分
if __name__ == "__main__":
rd_book = xlrd.open_workbook(ml, formatting_info=True)
date = copy.copy(rd_book)
table = date.sheets()#获取第一个表单
old_kl=table.cell(3,4).value#旧客流
old_xs=table.cell(3,7).value#旧销售
d = round(a/old_xs*100,2)#百分数
bfxs =str(d)[:4*100]+ '%'
e = round(g/old_kl*100,2)
bfkl =str(e)[:4*100]+ '%'
#xlwt写入部分
#格式部分
style = xlwt.XFStyle()
font = xlwt.Font()
font.name = '微软雅黑'
font.height = 280
style.font = font
borders = xlwt.Borders()
alignment = xlwt.Alignment()
alignment.horz = 2
alignment.vert = 1
alignment.wrap = 1
style.alignment = alignment
borders = xlwt.Borders()
borders.left = xlwt.Borders.THIN
borders.right = xlwt.Borders.THIN
borders.top = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
style.borders = borders
#写入部分
wb = copy(date)
Ws = wb.get_sheet(0)
Ws.write(3,5,old_kl,style)
Ws.write(3,8,old_xs,style)
Ws.write(3,7,a,style)
Ws.write(3,4,g,style)
Ws.write(3,9,bfxs,style)
Ws.write(3,6, bfkl, style)
Ws.write(3,10,zdgz,style)
wb.save('云泰2021年-融城园城茶马花街-x月x周主题街区数据周报.xls')
class myApp(wx.App):
defOnInit(self):
self.frame = Frame()
self.frame.Show(True)
return True
if __name__ == '__main__':
app = myApp()
app.MainLoop() 本帖最后由 Jack2002 于 2021-10-8 22:47 编辑
报错信息不是说了吗?copy是个函数,没有copy属性。
你这么引入copy,copy就是个函数,直接copy()调用就行了,不是copy.copy()。 Jack2002 发表于 2021-10-8 22:45
报错信息不是说了吗?copy是个函数,没有copy属性。
你这么引入copy,copy就是个函数,直接copy()调用就行 ...
明白了,非常感谢
页:
[1]