热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python处理复杂excel_【已解决】python解析excel文件并读取其中的sheet和row和column的值...

折腾:期间,需要去用python去读取和解析一个excel文件,并读取其中的内容,包括包括多个sheet,

折腾:

期间,需要去用python去读取和解析一个excel文件,并读取其中的内容,

包括包括多个sheet,以及每个sheet中行row和列column的单元格cell的值:

57aeb209b2c196df59d7f25f9fd6ce18.png

crifan python excel xlsx

python read excel xlsxxlwings

openpyxl

pandas

win32com

xlsxwriter

只能写入

DataNitro

xlutils

此处已经可以基本确定用:openpyxl

但是为了想要顺带再去学学panda的话,去搜搜:xlrd:用来读取很方便

openpyxl:虽然功能很强大,但是操作起来感觉没有xlwt方便openpyxl不错

xlrd也不赖

看下来:

复杂点的:panda+excel解析器,比如panda+openpyxl

简单点的:openpyxl或xlrd

很久之前用过:xlrd

现在为了尝试新的,且不太麻烦,还是先直接用:openpyxl吧。

参考官网文档:

➜  英语资源 pip install openpyxl

Collecting openpyxl

Downloading openpyxl-2.5.1.tar.gz (169kB)

100% |████████████████████████████████| 174kB 1.1MB/s

Collecting jdcal (from openpyxl)

Downloading jdcal-1.3.tar.gz

Collecting et_xmlfile (from openpyxl)

Downloading et_xmlfile-1.0.1.tar.gz

Building wheels for collected packages: openpyxl, jdcal, et-xmlfile

Running setup.py bdist_wheel for openpyxl … done

Stored in directory: /Users/crifan/Library/Caches/pip/wheels/98/5e/20/70cde417026f1e168acdac7babf47b204a7b752b1a8e6bb795

Running setup.py bdist_wheel for jdcal … done

Stored in directory: /Users/crifan/Library/Caches/pip/wheels/0f/63/92/19ac65ed64189de4d662f269d39dd08a887258842ad2f29549

Running setup.py bdist_wheel for et-xmlfile … done

Stored in directory: /Users/crifan/Library/Caches/pip/wheels/99/f6/53/5e18f3ff4ce36c990fa90ebdf2b80cd9b44dc461f750a1a77c

Successfully built openpyxl jdcal et-xmlfile

Installing collected packages: jdcal, et-xmlfile, openpyxl

Successfully installed et-xmlfile-1.0.1 jdcal-1.3 openpyxl-2.5.1

想要去写代码,但是发现对于excel中的列的表示不清楚:

然后就可以去使用L13这种写法去读取cell的值了。

代码:

# parse excel file

excelFullfilename = "/Users/crifan/dev/dev_root/xxx/xxx018.3.28_forDebug.xlsx"

wb = load_workbook(excelFullfilename)

logging.info("wb=%s", wb)

# sheetNameList = wb.get_sheet_names()

# logging.info("sheetNameList=%s", sheetNameList)

ws = wb[u"绘本"]

logging.info("ws=%s", ws)

rows = ws.rows

columns = ws.columns

是可以正常执行的:

7392158102ab5e0a2df8bbaa9249afb2.png

现在需要去搞清楚,一共有多少行,然后每行循环去处理。

去找找api文档:

-》

搜:

sheet

workbook

Openpyxl  get current sheet max row

row_count = sheet.max_row

column_count = sheet.max_column

-》

-》

“max_column

The maximum column index containing data (1-based)

Type:

int

max_row

The maximum row index containing data (1-based)

Type:

int “

找到了。

然后PyCharm中再想要去查看源码,也是可以看到合适的匹配出的代码的:

b78f914326600344bbd814d61446b9cc.png

f5cc87c2ff72a9c98470a54b1e089879.png

然后就可以去写代码读取值了:

from openpyxl import Workbook, load_workbook

StorybookSheetTitle = u"绘本"

EnglishStorybookRootPath = "/Users/crifan/dev/dev_rootxxx"

ExcelFilename = "xxx资源2018.3.28_forDebug.xlsx"

ExcelFullFilename = os.path.join(EnglishStorybookRootPath, ExcelFilename)

AudioFilePathPrefix = EnglishStorybookRootPath

# parse excel file

wb = load_workbook(ExcelFullFilename)

logging.info("wb=%s", wb)

# sheetNameList = wb.get_sheet_names()

# logging.info("sheetNameList=%s", sheetNameList)

ws = wb[StorybookSheetTitle]

logging.info("ws=%s", ws)

# process each row in excel

for curRowNum in range(realContentRowStartNum, ws.max_row + 1):

logging.info("-"*30 + " row[%d] " + "-"*30, curRowNum)

hasAudioFileColNumCellValue = ws.cell(row=curRowNum, column=HasAudioFileColNum).value

logging.info("col[%d] hasAudioFileColNumCellValue=%s", HasAudioFileColNum, hasAudioFileColNumCellValue)

audioFilePathColNumCellValue = ws.cell(row=curRowNum, column=AudioFilePathColNum).value

logging.info("col[%d] audioFilePathColNumCellValue=%s", AudioFilePathColNum, audioFilePathColNumCellValue)

对于excel文件:

9d79da9b159e3b271493d88fcda832d9.png

输出:

2018/03/30 02:55:02 LINE 104  INFO    wb=

2018/03/30 02:55:02 LINE 108  INFO    ws=

2018/03/30 02:55:02 LINE 113  INFO    mongoClient=MongoClient(host=[‘localhost:27017’], document_class=dict, tz_aware=False, connect=True)

2018/03/30 02:55:02 LINE 117  INFO    gridfsDb=Database(MongoClient(host=[‘localhost:27017′], document_class=dict, tz_aware=False, connect=True), u’gridfs’)

2018/03/30 02:55:02 LINE 125  INFO    fsCollection=

2018/03/30 02:55:02 LINE 129  INFO    —————————— row[3] ——————————

2018/03/30 02:55:02 LINE 132  INFO    col[12] hasAudioFileColNumCellValue=有

2018/03/30 02:55:02 LINE 134  INFO    col[13] audioFilePathColNumCellValue=None

调试的效果:

23aad2908a7f744d7406e9ff2aab0ba8.png



推荐阅读
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • java drools5_Java Drools5.1 规则流基础【示例】(中)
    五、规则文件及规则流EduInfoRule.drl:packagemyrules;importsample.Employ;ruleBachelorruleflow-group ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
author-avatar
张梦蒙4428
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有