Python操作Excel
Posted Carlos
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python操作Excel相关的知识,希望对你有一定的参考价值。
excel文件内容:
读取excel:
# coding=utf-8 import xlrd import sys reload(sys) sys.setdefaultencoding(\'utf-8\') import traceback class excelHandle: def decode(self, filename, sheetname): try: filename = filename.decode(\'utf-8\') sheetname = sheetname.decode(\'utf-8\') except Exception: print traceback.print_exc() return filename, sheetname def read_excel(self, filename, sheetname): filename, sheetname = self.decode(filename, sheetname) rbook = xlrd.open_workbook(filename) sheet = rbook.sheet_by_name(sheetname) rows = sheet.nrows cols = sheet.ncols all_content = [] for i in range(rows): row_content = [] for j in range(cols): cell = sheet.cell_value(i, j) row_content.append(cell) all_content.append(row_content) print \'[\' + \',\'.join("\'" + str(element) + "\'" for element in row_content) + \']\' return all_content if __name__ == \'__main__\': eh = excelHandle() filename = r\'G:\\test\\ctype.xls\' sheetname = \'Sheet1\' eh.read_excel(filename, sheetname)
输出:
[\'整形\',\'175.0\'] [\'字符串\',\'最后的骑士\'] [\'浮点型\',\'6.23\'] [\'日期\',\'42909.6461574\'] [\'空值\',\'\'] [\'布尔型\',\'1\']
可以看到,数字一律按浮点型输出,日期却输出成一串小数?!布尔型输出0或1
代码稍做改动:来看一看表格的数据类型
for i in range(rows): row_content = [] for j in range(cols): ctype = sheet.cell(i, j).ctype #表格的数据类型 print ctype, cell = sheet.cell_value(i, j) row_content.append(cell) all_content.append(row_content) print print \'[\' + \',\'.join("\'" + str(element) + "\'" for element in row_content) + \']\'
输出:
1 2 [\'整形\',\'175.0\'] 1 1 [\'字符串\',\'最后的骑士\'] 1 2 [\'浮点型\',\'6.23\'] 1 3 [\'日期\',\'42909.6461574\'] 1 0 [\'空值\',\'\'] 1 4 [\'布尔型\',\'1\']
python读取excel中单元格的内容返回的有5种类型,即上面例子中的ctype:
ctype: 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
所以,判断一下ctype,然后再做相应处理就可以了。
最终代码:
# coding=utf-8 import xlrd import sys reload(sys) sys.setdefaultencoding(\'utf-8\') import traceback from datetime import datetime from xlrd import xldate_as_tuple class excelHandle: def decode(self, filename, sheetname): try: filename = filename.decode(\'utf-8\') sheetname = sheetname.decode(\'utf-8\') except Exception: print traceback.print_exc() return filename, sheetname def read_excel(self, filename, sheetname): filename, sheetname = self.decode(filename, sheetname) rbook = xlrd.open_workbook(filename) sheet = rbook.sheet_by_name(sheetname) rows = sheet.nrows cols = sheet.ncols all_content = [] for i in range(rows): row_content = [] for j in range(cols): ctype = sheet.cell(i, j).ctype # 表格的数据类型 cell = sheet.cell_value(i, j) if ctype == 2 and cell % 1 == 0: # 如果是整形 cell = int(cell) elif ctype == 3: # 转成datetime对象 date = datetime(*xldate_as_tuple(cell, 0)) cell = date.strftime(\'%Y/%d/%m %H:%M:%S\') elif ctype == 4: cell = True if cell == 1 else False row_content.append(cell) all_content.append(row_content) print \'[\' + \',\'.join("\'" + str(element) + "\'" for element in row_content) + \']\' return all_content if __name__ == \'__main__\': eh = excelHandle() filename = r\'G:\\test\\ctype.xls\' sheetname = \'Sheet1\' eh.read_excel(filename, sheetname)
输出:
[\'整形\',\'175\'] [\'字符串\',\'最后的骑士\'] [\'浮点型\',\'6.23\'] [\'日期\',\'2017/23/06 15:30:28\'] [\'空值\',\'\'] [\'布尔型\',\'True\']
Python读取Excel
import xlrd
xlsFile = xlrd.open_workbook(FilePath)
xlsFile.sheet_names() //返回所有的分表的名字
book = xlsFile.sheet_by_index(index) //按照索引读取表格
book.nrows book.ncols 行和列
cel=book.cell(row, col) //表格的元素
type = cel.ctype //表格的类型
type的类型对应的不同的值
ctype: 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
二、使用介绍
1、导入模块
import xlrd
2、打开Excel文件读取数据
data = xlrd.open_workbook(\'excelFile.xls\')
3、使用技巧
获取一个工作表
更多操作excel可参考:http://www.2cto.com/kf/201501/373655.html
以上是关于Python操作Excel的主要内容,如果未能解决你的问题,请参考以下文章