900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Python的excel工作簿写入与读取操作

Python的excel工作簿写入与读取操作

时间:2020-12-06 05:15:55

相关推荐

Python的excel工作簿写入与读取操作

写入方式(一)——xlwt

xlwt(excel write)是一个用于将数据写入excel中的库,这个库只能用于写较老的excel文件(.xls格式),无法写.xlsx格式文件,并且无法修改一个已有的excel文件。

该方法写入时,只能循环一个一个数据写入,比如数组无法一次性写入行

import xlwtimport numpy as npa = [[1,2,3],[4,5,6],[7,8,9]]ar = np.array(a)book = xlwt.Workbook() # 创建Excelsheet = book.add_sheet('sheet1', cell_overwrite_ok=True) # 创建sheet页,cell_overwrite_ok=True表示允许单元格被重复操作sheet.write(0, 0, 'label1') # 第一个参数为row行, 第二个参数为col列, 第三个参数为写入的内容sheet.write(0, 1, 'label2')sheet.write(0, 2, 'label3')row = 1for num_row in range(len(a)):col = 0for i in(ar[num_row]):print(i)sheet.write(row, col, float(i))col += 1row+=1book.save('./001.xls')

输出结果为:

对应的读取方式——xlrd

xlrd(Excel read)是一个用于读取excel(.xls或.xlsx格式)文件中信息的python库,它对excel的操作方式为只读,只能读取数据,不能写入或者修改数据。

在介绍xlrd库之前,我们先整体分析一下excel文件。首先,最顶层是一个.xls或者.xlsx文件,即工作簿(workbook),打开之后会有一个或几个不同的表单(sheet),每个表单会有多行(row)和多列(col),每一行和列又有多个单元格(cell)。总结一下,一个excel文件有工作簿、表单、行、列和单元格五中对象,我们要获取数据就要一层一层定位,确定我们想要的内容的位置,最终获取数据。下面开始介绍读取excel文件的一些常用操作。

#========1 工作簿对象==========#导入xlrd库用于读取excel数据import xlrd#打开工作簿对象book = xlrd.open_workbook('excel对象路径')#========2 表单对象=========#获取表单列表sheets = book.sheets()#通过索引获取表单对象sheet = book.sheet_by_index(0)sheet = book.sheets()[0]#通过表单名称获取表单对象sheet = book.sheet_by_name('表单名称')#获取工作簿中表单数量sheet_num = book.nsheets#获取工作簿中表单名称列表sheet_names = book.sheet_names()#通过索引或名称载入表单,成功返回True,否则返回Falsebook.sheet_loaded(索引或名称)#通过索引或名称卸载表单book.unloaded_sheet()#========3 行或列对象=========#通过索引获取表单整行/列的值列表row = sheet.row_values(0)col = sheet.col_values(0)#获取表单行/列数row_num = sheet.nrowscol_num = sheet.ncols#========4 单元格对象=========cell = sheet.cell(i,j).valuecell = sheet.col_values(j)[i]cell = sheet.row_values(i)[j]cell = sheet.col(j)[I].valuecell = sheet.row(i)[j].value

例子:

fl = xlrd.open_workbook_xls('./001.xls')xls_sheet = fl.sheets()[0] # #获取表单列表row_value = xls_sheet.row_values(1) # 行print(np.array(row_value))输出:[1. 2. 3.]

写入方式(二)——csv

csv库能够实现整行写入,但是保存格式不能是.xls。

如果保存成.xls格式,会将整个数组放在一格里

import numpy as npimport csva = [[1,2,3],[4,5,6],[7,8,9]]ar = np.array(a)fl = open('./001.csv', 'w', newline='') # 若不加newline='',保存的文件里每一行都会多空出一行writer = csv.writer(fl)writer.writerow(['label1', 'label2', 'label3']) # 整行写入for values in ar:writer.writerow(values)fl.close()

保存为.csv文件时:

保存成.xls文件时:

对应的读取方式

fl = csv.reader(open(r'./001.csv'))print(fl)for i in fl:print(i)

输出结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。