python处理excel教程-Python对Excel(*.xls)的操作

本文介绍与一下Python对Excel文件的基本操作。

主要介绍两个模块xlrd和xlwt模块,这两个模块是针对Excel97-2003工作簿的,如果要操作Excel 2007及以上,需要使用openpyxl模块。并且xlwt模块只能创建一个新的工作簿,然后进行写操作,如果要对已经存在的工作簿进行操作,需要使用xlutils模块。

一个Excel文件,就是一个"工作簿”,一个"工作簿”里面可以包含多个"工作表(sheet)”

一、使用xlrd模块对文件进行读操作

假设我们的表如下,是一个"农村居民家庭人均纯收入和农村居民家庭人均消费情况”的表格。后缀为.xls。里面包含两个工作表,"各省市”和"测试表”。

70 import xlrd #引入模块 #打开文件,获取excel文件的workbook(工作簿)对象 workbook=xlrd.open_workbook("DataSource/Economics.xls") #文件路径 '''对workbook对象进行操作''' #通过sheet索引获得sheet对象 sheet0=workbook.sheet_by_index(0) print(sheet0) # #通过sheet名获得sheet对象 sheet0=workbook.sheet_by_name("各省市") print(sheet0) # #获取所有sheet的名字 name=workbook.sheet_names() print(name) #['各省市', '测试表'] 输出所有的表名,以列表的形式 #由上可知,workbook.sheet_names() 返回一个list对象,可以对这个list对象进行操作 sheet0_name=workbook.sheet_names()[0] #通过sheet索引获取sheet名称 print(sheet0_name) #各省市 '''对sheet对象进行操作''' name=sheet0.name #获取表的姓名 print(name) #各省市 nrows=sheet0.nrows #获取该表总行数 print(nrows) #32 for i in range(nrows): #循环打印每一行 print(sheet0.row_values(i)) #以列表形式读出,列表中的每一项是str类型 #['各省市', '工资性收入', '家庭经营纯收入', '财产性收入', ………………] #['北京市', '5047.4', '1957.1', '678.8', '592.2', '1879.0,…………] ncols=sheet0.ncols #获取该表总列数 print(ncols) #13 col_data=sheet0.col_values(0) #获取第一列的内容 print(col_data) #通过坐标读取表格中的数据 cell_value1=sheet0.cell_value(0,0) cell_value2=sheet0.cell_value(1,0) print(cell_value1) #各省市 print(cell_value2) #北京市 cell_value1=sheet0.cell(0,0).value print(cell_value1) #各省市 cell_value1=sheet0.row(0)[0].value print(cell_value1) #各省市

二、使用xlwt模块对文件进行写操作 # 导入xlwt模块 import xlwt #创建一个Workbook对象,相当于创建了一个Excel文件 book=xlwt.Workbook(encoding="utf-8",style_compression=0) ''' Workbook类初始化时有encoding和style_compression参数 encoding:设置字符编码,一般要这样设置:w = Workbook(encoding='utf-8'),就可以在excel中输出中文了。默认是ascii。 style_compression:表示是否压缩,不常用。 ''' # 创建一个sheet对象,一个sheet对象对应Excel文件中的一张表格。 sheet = book.add_sheet('test01', cell_overwrite_ok=True) # 其中的test是这张表的名字,cell_overwrite_ok,表示是否可以覆盖单元格,其实是Worksheet实例化的一个参数,默认值是False # 向表test中添加数据 sheet.write(0, 0, '各省市') # 其中的'0-行, 0-列'指定表中的单元,'各省市'是向该单元写入的内容 sheet.write(0, 1, '工资性收入') #也可以这样添加数据 txt1 = '北京市' sheet.write(1,0, txt1) txt2 = 5047.4 sheet.write(1, 1, txt2) #添加第二个表 sheet2=book.add_sheet("test02",cell_overwrite_ok=True) sheet2.write(0, 0, '各省市') sheet2.write(0, 1, '工资性收入') Province=['北京市', '天津市', '河北省', '山西省', '内蒙古自治区', '辽宁省', '吉林省', '黑龙江省', '上海市', '江苏省', '浙江省', '安徽省', '福建省', '江西省', '山东省', '河南省', '湖北省', '湖南省', '广东省', '广西壮族自治区', '海南省', '重庆市', '四川省', '贵州省', '云南省', '西藏自治区', '陕西省', '甘肃省', '青海省', '宁夏回族自治区', '新疆维吾尔自治区'] Income=['5047.4', '3247.9', '1514.7', '1374.3', '590.7', '1499.5', '605.1', '654.9', '6686.0', '3104.8', '3575.1', '1184.1', '1855.5', '1441.3', '1671.5', '1022.7', '1199.2', '1449.6', '2906.2', '972.3', '555.7', '1309.9', '1219.5', '715.5', '441.8', '568.4', '848.3', '637.4', '653.3', '823.1', '254.1'] Project=['各省市', '工资性收入', '家庭经营纯收入', '财产性收入', '转移性收入', '食品', '衣着', '居住', '家庭设备及服务', '交通和通讯', '文教、娱乐用品及服务', '医疗保健', '其他商品及服务'] #填入第一列 for i in range(1, len(Province)): sheet2.write(i, 0, Province[i-1]) #填入第二列 for i in range(1,len(Income)): sheet2.write(i,1,Income[i-1]) #填入第一行 for i in range(2,len(Project)): sheet2.write(0,i,Project[i]) # 最后,将以上操作保存到指定的Excel文件中 book.save('test1.xls')

执行后的结果如下:

第一张sheet:

70

第二张sheet:

70

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值