|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
想法公司Erp 导出Excel 分为三种格式‘xls’、‘csv’、‘xlsx’ 希望通过 建立一个类方法 通过应用new方法使得 类的实列化对象一开始就是读取了Excel表数据,通过构建方法对实列化对像进行数据分析。
具体例子:
有一个 ‘补毛利.xls’文件
实列化对象对象 data
data=Excel_read('补毛利.xls')
问题:
data.count11() 方法没有办法建立
我怀疑 我 new方法的返回值错了 那个大大能帮我改下,能对 实列化对象添加方法谢谢
代码如下:
import openpyxl,os,csv,xlwt,xlrd
from openpyxl import Workbook
def xls_read(path,workbook=1,row_num=1):#row_num 默认从第一行开始读取数据
xls=xlrd.open_workbook(path)#打开xls文件
workbook-=1
sheet=xls.sheet_by_index(workbook)#sheet 读取 第一个 表
data=[]
row_num-=1
rows=sheet.nrows
for i in range(row_num,rows):
every_line=sheet.row_values(i)
data.append(every_line)
return data
def csv_read(path):#导出的是完整数据
with open(path) as f:
reader=csv.reader(f)
data=[row for row in reader]
return data
def xlsx_read(path,workbook=1,row_num=1):#woorkbook默认第一个工作簿 row_num 默认从第一行开始读取数据
wb = openpyxl.load_workbook(path)
workbook-=1
a=wb.get_sheet_names()
sheet=wb.get_sheet_by_name(a[workbook])
rows=sheet.max_row+1
columns=sheet.max_column+1
data=[]
for i in range(row_num,rows):
临时列表=[]
for y in range(1,columns):
临时列表=临时列表+[sheet.cell(row=i, column=y).value]
data=data+[临时列表]
return data
class Excel_read(object):
def __new__(cls,path,workbook=1):
file_extension=os.path.splitext(path)[-1]
if 'xls' in file_extension:
print('开始读取xls,第%d张工作薄数据'%workbook)
data=xls_read(path,workbook)
elif 'csv' in file_extension:
print('开始读取csv数据')
data=csv_read(path)
elif 'xlsx' in file_extension:
print('开始读取xlsx第%d张工作薄数据'%workbook)
data=xlsx_read(path,workbook)
return data
def count11(self):
self=self[1]
return self
data本身只是一个list,又不是你定义的类的实例化对象,怎么能调用类方法?
|
-
|