问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python中怎么打开excel

发布网友 发布时间:2022-04-22 03:42

我来回答

3个回答

懂视网 时间:2022-04-06 18:15

最近看到好几次群里有人问xlwt、wlrd的问题,怎么说呢,如果是office2007刚出来,大家用xlsx文件用不习惯,还可以理解,这都10年过去了喂,就算没有进化到office2016,还在用office2003的有点说不过去吧。有人可以用xlsx保存为xls啊!——故意多做几步操作,目的呢?为了兼容?兼容古老的office2003?而且,既然都用python来操作excel了,还要手动保存一遍文件,这是神马思路?

所以,我还是觉得,应该放弃xls而转型xlsx。所以才有了这篇文章——xlwt、wlrd只能读写xls文件,而不能操作xlsx文件。

解决方案:openpyxl。这是一个非常简单的库,有几分钟就能上手了。安装非常简单,pip install openpyxl一步搞定,我就主要来说说对excel的操作。当然,前面废话那么多,同学们差不多也能猜到了吧,openpyxl只能操作xlsx文件而不能操作xls文件。

1、基本概念

在openpyxl中,主要用到三个概念:Workbooks,Sheets,Cells。Workbook就是一个excel工作表;Sheet是工作表中的一张表页;Cell就是简单的一个格。openpyxl就是围绕着这三个概念进行的,不管读写都是“三板斧”:打开Workbook,定位Sheet,操作Cell。下面分读和写分别介绍几个常见的方法。

2、读取xlsx

为了做实验,我事先准备好了一个excel文档,里面有Sheet1,Sheet2,Sheet3这三个页,在Sheet3中填入了如下内容:

首先用

from openpyxl import load_workbook

引入库

wb = load_workbook("template.xlsx")

打开一个xlsx文件

print(wb.sheetnames) # ['Sheet1', 'Sheet2', 'Sheet3']

可以看看打开的Excel里有哪些sheet页

sheet = wb.get_sheet_by_name("Sheet3")

读取到指定的Sheet页,sheet就变得神奇了,想要的内容都在这里。比如:

print(sheet["C"]) # (<Cell Sheet3.C1>, <Cell Sheet3.C2>, <Cell Sheet3.C3>, <Cell Sheet3.C4>, <Cell Sheet3.C5>, <Cell Sheet3.C6>, <Cell Sheet3.C7>, <Cell Sheet3.C8>, <Cell Sheet3.C9>, <Cell Sheet3.C10>) <-第C列
print(sheet["4"]) # (<Cell Sheet3.A4>, <Cell Sheet3.B4>, <Cell Sheet3.C4>, <Cell Sheet3.D4>, <Cell Sheet3.E4>) <-第4行
print(sheet["C4"].value) # c4 <-第C4格的值
print(sheet.max_row) # 10 <-最大行数
print(sheet.max_column) # 5 <-最大列数
for i in sheet["C"]:
 print(i.value, end=" ") # c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 <-C列中的所有值

写入xlsx

首先用

from openpyxl import Workbook
wb = Workbook()

创建一个工作表,然后

sheet = wb.active

找到活动的sheet页。空的excel表默认的sheet页就叫Sheet,如果想改名字,可以直接给title属性赋值。

sheet.title = "New Shit"

这个属性是可读可写的。当然,这个只针对当前活动页,别的页的话,可以用create_sheet和remove_sheet进行添加和删除。

往sheet页里面写内容就比较简单了,跟上面读一样,

sheet['C3'] = 'Hello world!'
for i in range(10):
 sheet["A%d" % (i+1)].value = i + 1

我们还可以进行花式操作,比如写写公式:

sheet["E1"].value = "=SUM(A:A)"

最后记得保存

wb.save('保存一个新的excel.xlsx')

热心网友 时间:2022-04-06 15:23

读excel要用到xlrd模块,官网安装(http://pypi.python.org/pypi/xlrd)。然后就可以跟着里面的例子稍微试一下就知道怎么用了。大概的流程是这样的:
1、导入模块
import
xlrd
2、打开excel文件读取数据
data
=
xlrd.open_workbook('excel.xls')
3、获取一个工作表

table
=
data.sheets()[0]
#通过索引顺序获取

table
=
data.sheet_by_index(0)
#通过索引顺序获取

table
=
data.sheet_by_name(u'sheet1')#通过名称获取
4、获取整行和整列的值(返回数组)
table.row_values(i)
table.col_values(i)
5、获取行数和列数 
table.nrows
table.ncols
6、获取单元格
table.cell(0,0).value
table.cell(2,3).value
就我自己使用的时候觉得还是获取cell最有用,这就相当于是给了你一个二维数组,余下你就可以想怎么干就怎么干了。得益于这个十分好用的库代码很是简洁。但是还是有若干坑的存在导致话了一定时间探索。现在列出来供后人参考吧:
1、首先就是我的统计是根据姓名统计各个表中的信息的,但是调试发现不同的表中各个名字貌似不能够匹配,开始怀疑过编码问题,不过后来发现是因为  空格。因为在excel中输入的时候很可能会顺手在一些名字后面加上几个空格或是tab键,这样看起来没什么差别,但是程序处理的时候这就是两个完全  不同的串了。我的解决方法是给每个获取的字符串都加上strip()处理一下。效果良好
2、还是字符串的匹配,在判断某个单元格中的字符串(中文)是否等于我所给出的的时候发现无法匹配,并且各种unicode也不太奏效,百度过一些解决  方案,但是都比较复杂或是没用。最后我采用了一个比较变通的方式:直接从excel中获取我想要的值再进行比较,效果是不错就是通用行不太好,个  呢不能问题还没解决。
二、写excel表
写excel表要用到xlwt模块,官网下载(http://pypi.python.org/pypi/xlwt)。大致使用流程如下:
1、导入模块
复制代码代码如下:
import
xlwt
2、创建workbook(其实就是excel,后来保存一下就行)
复制代码代码如下:
workbook
=
xlwt.workbook(encoding
=
'ascii')
3、创建表
复制代码代码如下:
worksheet
=
workbook.add_sheet('my
worksheet')
4、往单元格内写入内容
复制代码代码如下:
worksheet.write(0,
0,
label
=
'row
0,
column
0
value')
5、保存
复制代码代码如下:
workbook.save('excel_workbook.xls')

热心网友 时间:2022-04-06 16:41

# -*- coding: utf-8 -*-
import xlrd
import xlwt
from datetime import date,datetime
 
def read_excel():
  # 打开文件
  workbook = xlrd.open_workbook(r'F:\demo.xlsx')
  # 获取所有sheet
  print workbook.sheet_names() # [u'sheet1', u'sheet2']
  sheet2_name = workbook.sheet_names()[1]
 
  # 根据sheet索引或者名称获取sheet内容
  sheet2 = workbook.sheet_by_index(1) # sheet索引从0开始
  sheet2 = workbook.sheet_by_name('sheet2')
 
  # sheet的名称,行数,列数
  print sheet2.name,sheet2.nrows,sheet2.ncols
 
  # 获取整行和整列的值(数组)
  rows = sheet2.row_values(3) # 获取第四行内容
  cols = sheet2.col_values(2) # 获取第三列内容
  print rows
  print cols
 
  # 获取单元格内容
  print sheet2.cell(1,0).value.encode('utf-8')
  print sheet2.cell_value(1,0).encode('utf-8')
  print sheet2.row(1)[0].value.encode('utf-8')
   
  # 获取单元格内容的数据类型
  print sheet2.cell(1,0).ctype
 
if __name__ == '__main__':
  read_excel()

有xlrd和xlwt两个包就可以操作excle文件了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 python操作excel问题? wps中分类汇总怎么用 别人贷款买车,但车主可以写我的名字码 公司分期付款购车怎样进行账务处理 建行购车分期怎么还款 0首付购车,不看征信是骗局吗 分期购车的过程是什么 汽车分期付款方式 分期付款建房收据怎么写 分期付款买完车说什么按揭完了才有汽车发票拿这是... 分期贷款买车如何还款? 别人贷款买车,但车主可以写我的名字码你好? 分期购车还款怎么操作 分期付款买车以别人的名义可以吗? 贷款买车写的是谁的名字 贷款买车,车主要写谁的名字? 分期付款买车,行车本上写谁的名字? 分期还款,收据如何写 分期购车用谁的贷款车主写谁的名字吗? 在PPT中,添加了背景音乐,播放正常,但重复到第一... python与excel的区别 用python对excel操作,将配方罗列出来? 酸辣粉丝排骨汤的做法,酸辣粉丝排骨汤怎么做 酸辣粉怎么做好吃?可以自己制作吗? 粉怎么做最好 酸辣粉的做法 酸辣粉红烧排骨酸辣粉 酸辣粉的做法,配比,谢谢 ps雨衣怎么精修 PS如何精修产品图片,产品图片如何美化教程 ps精修产品需要对齐产品吗? 这种PS要怎么修? ps如何将产品进行精修 让它变得没那么油腻平滑一点 Photoshop如何精修钻戒产品图片教程 产品精修 PS 产品精修的快捷键有哪些? 如何使用Photoshop快速精修玻璃材质的化妆瓶 ps怎么对产品进行精修 如何利用PS给产品图加逼真倒影?电商美工必学的精... PS里面怎么把这样的产品修的比较光泽有质感 想玩游戏流畅一点,该怎么具体设置虚拟内存 win8玩游戏虚拟内存怎么设置最好