一、安装xlrd模块
到python官网下载http://pypi.python.org/pypi/xlrd模块。
二、读取excel
import xlrd
def Import_Excel(path):
data = xlrd.open_workbook(excelpath) #打开excel文件
table = data.sheets()[0] #通过索引顺序获取一个工作表,也等于用table = data.sheet_by_index(0);通过名称获取可以用table = data.sheet_by_name(u'sheet1');
listresult = [] #一个结果list,用来放读取的N行数据
for i in range(table.nrows): #获取行数table.nrows;获取列数table.ncols;
templist = [] #一个临时list,用来放一整行的数据
for j in table.row_values(i): #获取整行的值(数组)table.row_values(i);获取整列的值(数组)table.col_values(i);
templist.append(j)
listresult.append(templist)
return listresult
三、写入excel
import xlwt
def Export_Excel(path,listcontent):
data_w = xlwt.Workbook(encoding = 'utf-8') #创建一个工作薄
sheet = data_write.add_sheet('sheet1', cell_overwrite_ok = True) #创建一个工作表
x = 0 #初始行为0
for onerow in listcontent: #在listcontent的每一行中
y = 0 #初始列为0
for onecell in onerow: #在每一行的每个数值中
sheet.write(x,y,onecell) #写入第x行第y
y = y + 1 #列往后移动一位
x = x + 1 #行往下移动一位
data_w.save(path) #这里的path可以是'D盘test.xls'
四、补充:
单元格
cell_A1 = table.cell(0,0).value
cell_C4 = table.cell(2,3).value
使用行列索引
cell_A1 = table.row(0)[0].value
cell_A2 = table.col(1)[0].value
简单的写入
row = 0
col = 0
ctype = 1 value = '单元格的值' # 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
xf = 0 # 扩展的格式化
table.put_cell(row, col, ctype, value, xf)
Tips:关于日期存储
Excel中存储的日期,在xlrd读入时候是一个fload对象,如2011-06-18直接读入显示的是40712.0。我们需要将其转换成int,其实这个数在在excel中是从1899/12/31从0开始累加的。下面我们需要转换这个日期:
date_float = table.row_values(1)[1] #假设第一行第一列是日期
date_time = datetime.date.fromordinal(datetime.date(1899,12,31).toordinal()-1+int(date_float)).strftime("%Y-%m-%d")