
python解析excel出现的问题
我用的是python26,xlrd下载的是官方的0.7.7,现在出现的问题如下图所示在线等待高手解决问题··不胜感激·谢谢了··...
我用的是python26,xlrd下载的是官方的0.7.7,现在出现的问题如下图所示
在线等待高手解决问题··不胜感激·谢谢了·· 展开
在线等待高手解决问题··不胜感激·谢谢了·· 展开
2个回答
展开全部
class ExcelFile:
'''ExcelFile 类用于python简单地读写excel文件'''
def __init__(self):
self.handle, self.book = None, None
self.sheets = {}
def read(self, filename):
self.handle = xlrd.open_workbook(filename)
self.sheets = dict([(sheetname,self.handle.sheet_by_name(sheetname))
for sheetname in self.handle.sheet_names()])
def sheet_row(self, sheetname, rownumber = 0):
'''指定sheet页, 读取一行数据(通常用于读取首行标题)'''
if sheetname not in self.sheets: return None
if self.sheets[sheetname].nrows == 0: return None
return self.sheets[sheetname].row_values(rownumber)
def sheet_datas(self, sheetname, start_row, types = []):
'''指定sheet页, 读取从指定行开始的所有表格数据
(后面的列表指定各列数据类型转换的方法)
'''
for r in xrange(start_row, self.sheets[sheetname].nrows, 1):
try:
yield map(_tp, types, self.sheets[sheetname].row_values(r))
except Exception:
pass
def addsheet(self, name, title, data, styles=[]):
''' 添加Sheet页
name: 指定sheet页标签
title: 指定各列标题
data: 数组数据
styles: 指定各列格式
'''
if not self.book: self.book = xlwt.Workbook()
if name not in self.sheets:
self.sheets[name] = self.book.add_sheet(name)
sheet = self.sheets[name]
styles = ['Normal' if not item else item for item in styles]
r = 0
def write(d):
i, c = d
c = u'' if not c else (c if type(c)!=str else unicode(c,'gbk'))
style = 'Normal' if i<0 or i>=len(styles) else styles[i]
if style == 'DATE':
sheet.write(r, i, c, style_date)
elif style == 'DATETIME':
if type(c)==DateTime.datetime:
sheet.write(r, i, c, style_datetime)
else:
sheet.write(r, i, trys2dt(c), style_datetime)
elif style == 'MONEY':
sheet.write(r, i, c, style_money)
elif style == 'INT':
sheet.write(r, i, c, style_int)
elif style:
try:
sheet.write(r, i, c, style)
except:
sheet.write(r, i, c)
else:
sheet.write(r, i, c)
map( write, enumerate(title) )
for rid, row in enumerate(data):
r = rid+1
map( write, enumerate(row) )
def saveto(self, filename):
self.book.save(filename)
'''ExcelFile 类用于python简单地读写excel文件'''
def __init__(self):
self.handle, self.book = None, None
self.sheets = {}
def read(self, filename):
self.handle = xlrd.open_workbook(filename)
self.sheets = dict([(sheetname,self.handle.sheet_by_name(sheetname))
for sheetname in self.handle.sheet_names()])
def sheet_row(self, sheetname, rownumber = 0):
'''指定sheet页, 读取一行数据(通常用于读取首行标题)'''
if sheetname not in self.sheets: return None
if self.sheets[sheetname].nrows == 0: return None
return self.sheets[sheetname].row_values(rownumber)
def sheet_datas(self, sheetname, start_row, types = []):
'''指定sheet页, 读取从指定行开始的所有表格数据
(后面的列表指定各列数据类型转换的方法)
'''
for r in xrange(start_row, self.sheets[sheetname].nrows, 1):
try:
yield map(_tp, types, self.sheets[sheetname].row_values(r))
except Exception:
pass
def addsheet(self, name, title, data, styles=[]):
''' 添加Sheet页
name: 指定sheet页标签
title: 指定各列标题
data: 数组数据
styles: 指定各列格式
'''
if not self.book: self.book = xlwt.Workbook()
if name not in self.sheets:
self.sheets[name] = self.book.add_sheet(name)
sheet = self.sheets[name]
styles = ['Normal' if not item else item for item in styles]
r = 0
def write(d):
i, c = d
c = u'' if not c else (c if type(c)!=str else unicode(c,'gbk'))
style = 'Normal' if i<0 or i>=len(styles) else styles[i]
if style == 'DATE':
sheet.write(r, i, c, style_date)
elif style == 'DATETIME':
if type(c)==DateTime.datetime:
sheet.write(r, i, c, style_datetime)
else:
sheet.write(r, i, trys2dt(c), style_datetime)
elif style == 'MONEY':
sheet.write(r, i, c, style_money)
elif style == 'INT':
sheet.write(r, i, c, style_int)
elif style:
try:
sheet.write(r, i, c, style)
except:
sheet.write(r, i, c)
else:
sheet.write(r, i, c)
map( write, enumerate(title) )
for rid, row in enumerate(data):
r = rid+1
map( write, enumerate(row) )
def saveto(self, filename):
self.book.save(filename)
展开全部
找了下我以前的代码,有这么段:
def xls2db(path):
bk = xlrd.open_workbook(path)
for sheet in range(bk._all_sheets_count):
sh = bk.sheets()[sheet]
rowValues = sh.row_values(1)
... ...
我是用_all_sheets_count这个属性来获取表数量的,通过sheets()[num]来获取具体的表,然后通过row_values(num)获取值。你用的是sheets_name这个函数,从字面上看,是获取的表名称吧?而不是具体的表数据。
def xls2db(path):
bk = xlrd.open_workbook(path)
for sheet in range(bk._all_sheets_count):
sh = bk.sheets()[sheet]
rowValues = sh.row_values(1)
... ...
我是用_all_sheets_count这个属性来获取表数量的,通过sheets()[num]来获取具体的表,然后通过row_values(num)获取值。你用的是sheets_name这个函数,从字面上看,是获取的表名称吧?而不是具体的表数据。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询