使用python3操作excel文件

print('Hello, 2019年一定要当上程序员!')

from openpyxl import load_workbook #导入模块,读取Excel文件
from openpyxl import Workbook #导入模块,将数据写入Excel文件

#以下内容是读取Excel文件,读和写Excel文件的代码可能都是通用的
#---------------------开始学习读取Excel文件---------------------------------------------------
#---------------------开始学习读取Excel文件---------------------------------------------------

wb = load_workbook("D:\IT\ss.xlsx") #打开文件
#print(wb.get_sheet_names()) #获取所有sheet的名称
sheet = wb.active # 获得当前正在显示的sheet, 也可以用wb.get_active_sheet()
#print(wb.active)#显示当前正在使用的sheet,也可以使用print(wb.get_active_sheet())

#print(sheet.max_row) #获取最大列,要先用了active方法查看正在使用的sheet,才能用这个方法去获取最大列和最大行
#print(sheet.max_column) #获取最大行

b4_too = sheet.cell(row=1, column=2) #使用cell方法查看表格的单元格,括号里的参数(row代表行,column代表列)
#print(b4_too.value) #使用value方法,显示单元格的值

#获取行和列
#sheet.rows为生成器, 里面是每一行的数据,每一行又由一个tuple包裹。
#按行获取,所以下面的代码是返回A1, B1, C1这样的顺序
for row in sheet.rows:
	for cell in row:
		print(cell.value) #使用value方法,显示单元格的值


#sheet.columns类似,不过里面是每个tuple是每一列的单元格。
#按竖获取, A1, A2, A3这样的顺序
for column in sheet.columns:
	for cell in column:
		print(cell.value) #使用value方法,显示单元格的值


#如果要获取指定行的内容,因为使用rows方法获取到的单元格是元祖数据,下面要将获取到的rows数据使用list方法转换成列表,
#然后写入索引,就可以获取指定行的内容了,如果要获取竖的内容,就将rows换成columns
for cell in list(sheet.rows)[1]:  #获取第二行内容,记得,列表的索引是从0开始算的
	print(cell.value)


#获取任意区间的单元格,使用range即可
#注意range从1开始的,因为在openpyxl中为了和Excel中的表达方式一致,并不和编程语言的习惯以0表示第一个值。
for i in range(1,4):
	for y in range(1,3):
		print(sheet.cell(row=i, column=y).value)



#-------------------------结束学习读取Excel文件---------------------------------------------------
#-------------------------结束学习读取Excel文件---------------------------------------------------


#以下内容是将数据写入Excel文件,读和写Excel文件的代码可能都是通用的
#-------------------------开始学习将数据写入Excel文件--------------------------------------------------------
#-------------------------开始学习将数据写入Excel文件--------------------------------------------------------

#激活Workbook
#创建Excel文件(只是还没有保存)
wb = Workbook(write_only=True) #若要指定只写模式,可以指定参数write_only=True。一般默认的可写可读模式就可以了。
#暂时发现如果不写write_only=True参数,那创建的Excel文件就会自动创建一个sheet工作表


#使用create_sheet方法创建sheet工作表
# 新建一个工作表,可以指定索引,适当安排其在工作簿中的位置(创建Excel文件的时候,如果是可读可写模式,会自动生成一个工作表)
#wb.create_sheet('Data', index=1) # 第一个参数写要创建的工作表名字,第二个参数是将创建的工作表放在哪里,里面的参数可写可不写
#print(wb.get_sheet_names()) #获取所有sheet的名称
#wb.create_sheet('Datas', index=0) # 第一个参数写要创建的工作表名字,第二个参数是将创建的工作表放在哪里
wb.create_sheet('Datasssaaa') #如果不写位置参数,那自动插入到最后的工作表
#print(wb.get_sheet_names()) #获取所有sheet的名称
wb.create_sheet('Da', 1) #在索引1创建一个名字叫Da的工作表
#print(wb.get_sheet_names()) #获取所有sheet的名称

#删除工作表
#wb.remove_sheet(wb.get_sheet_by_name("Da"))  #括号参数写工作表的名字
#print(wb.get_sheet_names()) #获取所有sheet的名称

#要写入数据,就要先使用active方法
ws = wb.active # 数据直接分配到单元格中
ws.title = "range names" #对第一个工作表修改名字
#按行添加数据,在这里使用append,python会自动转换类型
ws.append([1, 2, 3])
ws.append([2, 2, 3, 4])
ws.append(['嘿嘿', '哈哈', '呵呵'])
#使用for就可以对第一列添加数据了
for i in range(10):
	ws.append([i])


#下面4行代码可将a列表放进第一列,b列表放进第二列
a = [123,465,897,51,65465,498,65]
b = [65,498,65,4,51,65,495,49]
for z, x in list(zip(a,b)):
	ws.append([z,x])

wb.merge_cells('B11:G11')
wb.save(r'D:\IT\aa.xlsx') #保存文件,注意:如果该文件存在,则覆盖原有的文件
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值