python中打开excel文件,python读写excel文件
一. xlrd和xlwt
你需要在使用它之前安装它。如果在windows上直接在cmd中运行python,需要先执行pip3 install xlrd和pip3 install xlwt。如果使用pycharm,需要在项目的解释器中安装这两个模块。文件-设置-项目:布局-项目解释器,点击右边界面的+号,然后搜索xlrd和xlwt,再点击安装包进行安装。
对于excel来说,整个excel文件称为工作簿,工作簿中的每一页都称为工作表,工作表由痴情的冬天组成。
对于xlrd和xlwt,行列数从0开始,《花痴的冬天》的行列数也是这样。例如,sheet.row_values(2)表示第三行的内容,sheet.cell(1,2)表示第三行的内容。值表示第二行第三列中花痴的冬天的内容。
1.xlrd模块读取excel文件
您需要在使用xlrd模块之前导入导入xlrd,该模块可以读取xls文件和xlsx文件。
获取工作簿对象:book=xlrd.open_workbook(excel文件名)
获取所有工作表名称:names=book.sheet_names(),结果是一个列表。
根据索引获取工作表对象:sheet=book.sheet_by_index(i)
按名称获取工作表对象:sheet=book.sheet_by_name(工作表名称)
获取工作表行数:rows=sheet.nrows
获取工作表的列数:cols=sheet.ncols
获取工作表中某一行的内容:row=sheet.row_values(i),结果是一个list [sheet.row(i),list]
获取工作表中某一列的内容:col=sheet.col_values(i)结果是一个列表[sheet.col(i),list]
获取工作表中一个花痴的冬天的内容:cell=sheet.cell_value(m,n),sheet.cell(m,n)。值,sheet.row(m)[n]。值,sheet.col(n)[m]。值,结果是字符串或值[sheet.cell(0,0
例:假设py执行文件的同一级目录下有一个fruit.xls文件,有三个表页,分别是Sheet1、Sheet2、Sheet3,其中Sheet1的内容如下:
importxlrd
book=xlrd . open _ workbook( fruit . xls )print(工作表页面名称:,book.sheet_names())
sheet=book.sheet_by_index(0)
rows=sheet.nrows
Cols=sheet.ncolsprint(此工作表有%d行和%d列。%(rows,cols))print(第三行包含:,sheet.row_values(2))print(第二列包含%s,数据类型为% s . %(sheet Type(sheet . cell _ value(1(1)))print(第二列包含% s,数据类型为% s.% (sheet.col (1),type (sheet.col (1))) print(第二行第二列花痴的冬季内容为:,sheet 1) print(花痴的冬季内容value)print(第五行第三列花痴的冬天内容是:,sheet.row(4)[2]。值)打印(第五行第三列花痴的冬季内容为%s数据类型为%s%(工作表。col (2) [4]。值、类型(表。col (2) [4]。value)) print(第五行第三列花痴的冬季内容为% s,数据类型为%s%(sheet.col(2)[4]。type(sheet . col(2)[4])#执行结果#工作表页面名称:[Sheet1 , Sheet2 , Sheet3]#此工作表有5行3列。#第三行是[pear ,3.5,130.0]#第二列是数据类型is。#第二列为[正文:单价/元,数字:8.0,数字:3.5,数字:4.5,数字:3.8],数据类型为。#第二行和第二列中的花痴的冬季含量是8.0#第三行和第二列中的花痴的冬季含量是3.5#第五行和第三列中的花痴的冬季含量是300.0#第五行和第三列中的花痴的冬季含量是300.0,数据类型是#第五行和第三列中的花痴的冬季含量是数字:300.0
Xlrd读取excel示例
可以看出,行或列的内容也可以通过sheet.row(i)和sheet.col(i)获得,结果也是一个列表,但列表中的每一项都类似于一个字典键值对,数据类型为:value。
而sheet.cell(0,0)获取花痴的冬季内容,结果是一个键值对,而且是一个xlrd.sheet.Cell对象。
2.xlwt写入excel文件
在使用xlwt模块之前,需要导入导入xlwt模块。xlwt模块只能写xls文件,不能写xlsx文件(写xlsx程序不会报错,但是最后直接打不开文件,会报错)。
创建工作簿:book=xlwt。工作簿()。如果汉字是乱码,可以添加参数encoding=utf-8
创建一个工作表:sheet=book.add_sheet(Sheet1 )
将内容写入花痴的冬天:sheet.write(m,n,内容1 ),sheet.write(x,y,内容2 )
保存工作簿:book.save(excel文件名),默认保存在py文件的同一路径下。如果这个路径中存在相同的文件,它将被新创建的文件覆盖,即xlwt无法修改该文件。
importxlwt
book=xlwt。工作簿()
sheet=book.add_sheet(Sheet1 )
sheet.write(0,0,你好)
Sheet.write(1,0, Hello )
book.save(hello.xls )
Xlwt创建并编写excel样本。
痴情的冬天一个个写excel很麻烦。你可以把它写成行或列。
importxlwt
Proj=[名称,单价/元,库存/公斤]
水果=[苹果,梨,香蕉,橘子]
价格=[8,3.5,4.5,3.8]
存储=[150,130,100,300]
book=xlwt。工作簿()
sheet=book . add _ sheet( sheet 1 )for I in range(0,len(proj)):
Sheet.write(0,I,proj[i])#按行插入行标题
for i inrange(0,len(fruit)):
Sheet.write(i 1,0,fruit[i]) #插入水果名称的第一列
对于i inrange(0,len(price)):
Sheet.write(i 1,1,price[i]) #在第二列中插入单价
对于i inrange(0,len(存储)):
Sheet.write(i 1,2,storage[i]) #插入库存的第三列
book.save(fruit2.xls )
Xlwt逐行或逐列写入excel。
二、openpyxl模块
Openpyxl模块可以读写修改excel文件,只能处理xlsx文件,不能处理xls文件。在使用之前,还需要安装这个模块,然后导入到import openpyxl中。
对于openpyxl,行数和列数从1开始,花痴的冬天的行数和列数也从1开始。例如,sheet.cell(1,2)。值指示花痴的冬天的第一行和第二列的内容。
1.openpyxl读取excel文件
获取工作簿对象:book=open pyxl . load _ workbook( Excel文件名)
获取所有工作表名称:names=book.sheetnames
获取工作表对象:sheet1=book.worksheets[n],sheet2=book[工作表名称],sheet 3=book[book . sheet names[n]]
获取工作表名称:title=sheet1.title
获取工作表行数:rows=sheet1.max_row
获取工作表列数:cols=sheet1.max_column
得到一个花痴的冬天内容:cell=sheet.cell(1,2)。值,单[花痴的冬天]。例如,sheet[B1]。
假设有一个fruit2.xlsx,和上面的fruit.xls除了后缀完全一样。
importopenpyxl
book=open pyxl . load _ workbook( fruit 2 . xlsx )print(所有工作表页面名称:,book.sheetnames)
sheet=book.worksheets[0]
sheet2=book[Sheet1]
sheet=book[book . sheet names[0]]print(工作表名称:,sheet3.title)
rows=sheet.max_row
Col=sheet.max _ columnprint(此工作表有%d行和%d列。%(rows,cols))#执行结果#所有工作表页面名称:[Sheet1 , Sheet2 , Sheet3]#工作表名称:Sheet1#此工作表有5行3列。
Openpyxl读取excel示例
2.行和列生成器
对于xlrd模块,可以通过sheet.row[i]和sheet.col[i]直接获取行和列的内容,但是对于openpyxl模块,不能直接获取某一行或某一列的内容。openpyxl模块的sheet.rows和sheet.columns表示行和列的生成器,也就是generator对象,行或列的值需要通过循环或者转换成列表或者元组来获取。
Print (sheet.rows,sheet . columns)for col in sheet . cols:print(col)for row for sheet . rows:for I in row:print(I . value,end=) print () #执行结果# #(,)#(,)#名称单价/元库存/公斤#苹果8 150#梨3.5 130#香蕉4.5 100#橙3.8 300
Openpyxl的行和列生成器
如果您想要获取某一行或列的内容,您可以将行和列生成器对象转换为列表或元组,并循环使用这些列表或元组来获取内容。
已经说过openpyxl模块的行和列是从1开始的,但是由于生成器转换成的是list list(sheet.rows),而list的索引是从0开始的,所以list(sheet.rows)[1]还是表示第二行的内容,而不是第一行的内容。
for I in list(sheet . rows)[1]:print(I . value,end= )print()for I in list(sheet . columns)[0]:print(I . value,end=) #执行结果# Apple 8 150#名称苹果梨香蕉橙
获取行或列的内容。
获取花痴冬天的内容。
Print(sheet.cell(1,2))。value) #花痴的冬天第一行第二列的内容
打印(纸张[a2]。value) #使用excel中《迷恋的冬天》的批注,字母不区分大小写。
3.openpyxl写excel文件
创建工作簿:book=openpyxl。工作簿()。如果汉字是乱码,可以添加参数encoding=utf-8
create worksheet:sheet=book . create _ sheet( worksheet name ,0),0表示创建的工作表在工作簿的前面。
将内容写入花痴的冬天:sheet.cell(m,n,内容1 ),sheet.cell(x,y,内容2 )
保存工作簿:book.save(excel文件名),默认保存在py文件的同一路径下。如果此路径中有相同的文件,它将被新创建的文件覆盖。
book=openpyxl。工作簿()
sheet=book . create _ sheet( sheet 1 ,0)
Proj=[名称,单价/元,库存/公斤]
水果=[苹果,香蕉,梨,橘子]
价格=[8,3.5,4.5,3.8]
i inrange(len(proj))的存储=[150,130,300,100]:
i inrange(len(fruit))的sheet.cell(1,i 1,proj[i]):
i inrange(len(price))的sheet.cell(i 2,1,fruit[i]):
i inrange(len(storage))的sheet.cell(i 2,2,price[i]):
sheet.cell(i 2,3,存储[i])
book.save(fruit2.xlsx )
Openpyxl创建并编写excel示例。
4.openpyxl修改excel文件
Sheet.insert_rows(m)和sheet.insert_cols(n)分别表示在第m行和第n列前面插入行和列。
Sheet.delete_rows(m)和sheet.delete_cols(n)分别删除第m行和第n列。
rows=sheet.max_row
sheet.insert_rows(第2行)
樱桃=[樱桃,17,80]j in cherry:
sheet.cell(第1行,cherry.index(j) 1,j)
book.save(fruit2.xlsx )
Openpyxl在指定位置添加一行。
修改花痴的冬季内容:sheet.cell(m,n)=内容1 或sheet[B3]=内容2
sheet.cell(3,2,4)
sheet[ B3 ]=5 book . save( fruit 2 . xlsx )
Openpyxl修改花痴的冬天的内容
在末尾添加行:sheet.append (iterable对象)。
草莓=[草莓,20,50]
工作表.附加(草莓)
book.save(fruit2.xlsx )
Append在末尾追加一行。
Xlrd,xlwt,openpyxl处理excel文件,但是写文件没有熊猫那么简单。见另一个博客,https://www.cnblogs.com/Forever77/p/11298173.html,的熊猫处理excel文件。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。