python 解析Excel

公司背景:好吧LZ太懒了.略...

原由起因:公司老板发话要导出公司数据库中符合条件的数据,源数据有400万,符合条件的大概有70万左右吧.

最终目的:符合条件的数据并生成Excel

翠花,上代码:

由于LZ python的底子并不是很好只会写一些简单的脚本,全当是记录学习里程了。此次采用的是openpyxl,因为查到它支持Excel2010

# coding=utf-8

from openpyxl.workbook import Workbook

from openpyxl.writer.excel import ExcelWriter

from openpyxl.styles import Color, Fill

from openpyxl.cell import Cell

import datetime

from pymongo import MongoClient

import pymongo

import smtplib

from email.MIMEText import MIMEText

from email.MIMEMultipart import MIMEMultipart

from email.MIMEBase import MIMEBase

from email import Encoders

import time

mongoDB = MongoClient('beta-mongo01')#公司数据库采用的是mongodb 别问我为什么LZ也不知道为毛不用关系型数据库

db_name = 'core'

db = mongoDB[db_name]

rows = db.customerProfiles.find()

filters = ["理财","金融","证劵","咨询","银行","财务","信托","基金","期货","租赁","投资","保险","会计","审计","投行","券商","股权","风险","财务","财富","资产"]#这是筛选条件 自己猜我们是干啥的吧...

def getfiltersByexperiences(experiences):#这是数据筛选

for i in filters:

if i.decode('utf-8') in experiences:

return True

def getExperieces(row):#筛选工作经历

try:

experiences = ""

i = 0

while i < len(row["workExperiences"]):

experiences = experiences + row["workExperiences"][i]["position"] + row["workExperiences"][i]["organization"]

i =i +1

continue

return getfiltersByexperiences(experiences)

except Exception as e:

experiences = ""

return getfiltersByexperiences(experiences)

def getfiltersByexpect(expect):#另一个筛选

for i in filters:

if i.decode('utf-8') in expect:

return True

def getExpect(row):#这也是

try:

expect = ""

i = 0

while i < len(row["expect"]["expectIndustry"]):

expect = expect + row["expect"]["expectIndustry"][i]

i =i +1

continue

return getfiltersByexpect(expect)

except Exception as e:

expect = ""

return getfiltersByexpect(expect)

def getfullName(row):#这也是

try:

if row["fullName"] != "" and row["fullName"] != None:

return True

else:

return False

except Exception as e:

return False

def getEmail(row):#这也是

try:

if row["descriptions"]["contactEmail"] != "" and row["descriptions"]["contactEmail"] != None:

return True

else:

return False

except Exception as e:

return False

def getPhone(row):#这也是

try:

if row["descriptions"]["contactPhoneNumber"] != "" and row["descriptions"]["contactPhoneNumber"] != None:

return True

else:

return False

except Exception as e:

return False

now = datetime.datetime.now()

#新建一个workbook

wb = Workbook()

#第一个sheet是ws

ws = wb.worksheets[0]

#设置ws的名称

ws.title = u"简历数据"

#给A1赋值

ws.cell('A1').value = '%s'%("编号")

ws.cell('B1').value = '%s'%("CustomerId")

ws.cell('C1').value = '%s'%("姓名")

ws.cell('D1').value = '%s'%("性别")

ws.cell('E1').value = '%s'%("所在地")

ws.cell('F1').value = '%s'%("邮箱")

ws.cell('G1').value = '%s'%("电话")

ws.cell('H1').value = '%s'%("曾经任职职位")

ws.cell('I1').value = '%s'%("曾经任职公司")

ws.cell('J1').value = '%s'%("期望行业")

ws.cell('K1').value = '%s'%("工作年份")

ws.cell('L1').value = '%s'%("简历更新时间")

ws.cell('M1').value = '%s'%("简历来源")

count = 2

for row in rows:#循环取数据

if getfullName(row) == True:

if getEmail(row) == True or getPhone(row) == True:

if getExperieces(row) == True or getExpect(row) == True:

count = count +1

if count >200002:

try:

position = ""

if len(row["workExperiences"]) == 0:

pass

else:

i = 0

while i < len(row["workExperiences"]):

position = position + row["workExperiences"][i]["position"] + "/"

i =i +1

continue

except Exception as e:

position = ""

try:

organization = ""

if len(row["workExperiences"]) == 0:

pass

else:

i = 0

while i < len(row["workExperiences"]):

organization = organization + row["workExperiences"][i]["organization"] + "/"

i =i +1

continue

except Exception as e:

organization = ""

try:

expectedIndustry = ""

if len(row["expect"]["expectedIndustry"]) == 0:

pass

else:

i = 0

while i < len(row["expect"]["expectIndustry"]):

expectedIndustry = expectedIndustry + row["expect"]["expectIndustry"][i]

i =i +1

continue

except Exception as e:

expectedIndustry = ""

try:#开始写excel

ws.cell(str('A'+str(count))).value = '%s'%(str(count-1))

ws.cell(str('B'+str(count))).value = '%s'%(str(row.get("_id","")))

ws.cell(str('C'+str(count))).value = '%s'%(row.get("fullName",""))

ws.cell(str('D'+str(count))).value = '%s'%(row.get("gender",""))

ws.cell(str('E'+str(count))).value = '%s'%(row.get("descriptions","").get("city",""))

ws.cell(str('F'+str(count))).value = '%s'%(row.get("descriptions","").get("contactEmail",""))

ws.cell(str('G'+str(count))).value = '%s'%(row.get("descriptions","").get("contactPhoneNumber",""))

ws.cell(str('H'+str(count))).value = '%s'%(position)

ws.cell(str('I'+str(count))).value = '%s'%(organization)

ws.cell(str('J'+str(count))).value = '%s'%(expectedIndustry)

ws.cell(str('K'+str(count))).value = '%s'%(str(row.get("descriptions","").get("workLife","")) + "年")

ws.cell(str('L'+str(count))).value = '%s'%(str(row.get("updateTime","2015-05-05 00:00:00"))[0:11])

ws.cell(str('M'+str(count))).value = '%s'%(str(row.get("source","")))

except Exception as e:

count = count +1

continue

print(count)

if count == 500002:

break

else:

continue

else:

continue

else:

continue

else:

continue

##修改某一列宽度

ws.column_dimensions["A"].width =10.0

ws.column_dimensions["B"].width =25.0

ws.column_dimensions["C"].width =10.0

ws.column_dimensions["D"].width =10.0

ws.column_dimensions["E"].width =15.0

ws.column_dimensions["F"].width =20.0

ws.column_dimensions["G"].width =15.0

ws.column_dimensions["H"].width =25.0

ws.column_dimensions["I"].width =35.0

ws.column_dimensions["J"].width =35.0

ws.column_dimensions["K"].width =15.0

ws.column_dimensions["L"].width =15.0

ws.column_dimensions["M"].width =10.0

#文件Name

file_name = str(now.strftime("%Y%m%d")) + "(2).xlsx"

#文件存放地址

file_dir = '/usr/src/Python'

##保存生成xlsx

wb.save(filename = str(file_name))

ew = ExcelWriter(workbook = wb)

还有一些从网上找的记录下来 各种方法...

python读取excel文件代码:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# 读取excel数据

# 小罗的需求,取第二行以下的数据,然后取每行前13列的数据

import xlrd

data = xlrd.open_workbook('test.xls') # 打开xls文件

table = data.sheets()[0] # 打开第一张表

nrows = table.nrows # 获取表的行数

for i in range(nrows): # 循环逐行打印

if i == 0: # 跳过第一行

continue

print table.row_values(i)[:13] # 取前十三列

使用xlrd读取文件,使用xlwt生成Excel文件(可以控制Excel中单元格的格式)。但是用xlrd读取excel是不能对其进行操作的;而 xlwt生成excel文件是不能在已有的excel文件基础上进行修改的,如需要修改文件就要使用xluntils模块。pyExcelerator模 块与xlwt类似,也可以用来生成excel文件。

#coding=utf-8

#######################################################

#filename:test_xlrd.py

#author:defias

#date:xxxx-xx-xx

#function:读excel文件中的数据

#######################################################

import xlrd

#打开一个workbook

workbook = xlrd.open_workbook('E:\\Code\\Python\\testdata.xls')

#抓取所有sheet页的名称

worksheets = workbook.sheet_names()

print('worksheets is %s' %worksheets)

#定位到sheet1

worksheet1 = workbook.sheet_by_name(u'Sheet1')

"""

#通过索引顺序获取

worksheet1 = workbook.sheets()[0]

#或

worksheet1 = workbook.sheet_by_index(0)

"""

"""

#遍历所有sheet对象

for worksheet_name in worksheets:

worksheet = workbook.sheet_by_name(worksheet_name)

"""

#遍历sheet1中所有行row

num_rows = worksheet1.nrows

for curr_row in range(num_rows):

row = worksheet1.row_values(curr_row)

print('row%s is %s' %(curr_row,row))

#遍历sheet1中所有列col

num_cols = worksheet1.ncols

for curr_col in range(num_cols):

col = worksheet1.col_values(curr_col)

print('col%s is %s' %(curr_col,col))

#遍历sheet1中所有单元格cell

for rown in range(num_rows):

for coln in range(num_cols):

cell = worksheet1.cell_value(rown,coln)

print cell

"""

#其他写法:

cell = worksheet1.cell(rown,coln).value

print cell

#或

cell = worksheet1.row(rown)[coln].value

print cell

#或

cell = worksheet1.col(coln)[rown].value

print cell

#获取单元格中值的类型,类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

cell_type = worksheet1.cell_type(rown,coln)

print cell_type

"""

#coding=utf-8

#######################################################

#filename:test_xlwt.py

#author:defias

#date:xxxx-xx-xx

#function:新建excel文件并写入数据

#######################################################

import xlwt

#创建workbook和sheet对象

workbook = xlwt.Workbook() #注意Workbook的开头W要大写

sheet1 = workbook.add_sheet('sheet1',cell_overwrite_ok=True)

sheet2 = workbook.add_sheet('sheet2',cell_overwrite_ok=True)

#向sheet页中写入数据

sheet1.write(0,0,'this should overwrite1')

sheet1.write(0,1,'aaaaaaaaaaaa')

sheet2.write(0,0,'this should overwrite2')

sheet2.write(1,2,'bbbbbbbbbbbbb')

"""

#-----------使用样式-----------------------------------

#初始化样式

style = xlwt.XFStyle()

#为样式创建字体

font = xlwt.Font()

font.name = 'Times New Roman'

font.bold = True

#设置样式的字体

style.font = font

#使用样式

sheet.write(0,1,'some bold Times text',style)

"""

#保存该excel文件,有同名文件时直接覆盖

workbook.save('E:\\Code\\Python\\test2.xls')

print '创建excel文件完成!'

#coding=utf-8

#######################################################

#filename:test_xlutils.py

#author:defias

#date:xxxx-xx-xx

#function:向excel文件中写入数据

#######################################################

import xlrd

import xlutils.copy

#打开一个workbook

rb = xlrd.open_workbook('E:\\Code\\Python\\test1.xls')

wb = xlutils.copy.copy(rb)

#获取sheet对象,通过sheet_by_index()获取的sheet对象没有write()方法

ws = wb.get_sheet(0)

#写入数据

ws.write(1, 1, 'changed!')

#添加sheet页

wb.add_sheet('sheetnnn2',cell_overwrite_ok=True)

#利用保存时同名覆盖达到修改excel文件的目的,注意未被修改的内容保持不变

wb.save('E:\\Code\\Python\\test1.xls')

#coding=utf-8

#######################################################

#filename:test_pyExcelerator_read.py

#author:defias

#date:xxxx-xx-xx

#function:读excel文件中的数据

#######################################################

import pyExcelerator

#parse_xls返回一个列表,每项都是一个sheet页的数据。

#每项是一个二元组(表名,单元格数据)。其中单元格数据为一个字典,键值就是单元格的索引(i,j)。如果某个单元格无数据,那么就不存在这个值

sheets = pyExcelerator.parse_xls('E:\\Code\\Python\\testdata.xls')

print sheets

#coding=utf-8

#######################################################

#filename:test_pyExcelerator.py

#author:defias

#date:xxxx-xx-xx

#function:新建excel文件并写入数据

#######################################################

import pyExcelerator

#创建workbook和sheet对象

wb = pyExcelerator.Workbook()

ws = wb.add_sheet(u'第一页')

#设置样式

myfont = pyExcelerator.Font()

myfont.name = u'Times New Roman'

myfont.bold = True

mystyle = pyExcelerator.XFStyle()

mystyle.font = myfont

#写入数据,使用样式

ws.write(0,0,u'ni hao 帕索!',mystyle)

#保存该excel文件,有同名文件时直接覆盖

wb.save('E:\\Code\\Python\\mini.xls')

print '创建excel文件完成!'

python 解析excel模板_python 解析Excel相关推荐

  1. 基于SpringMVC+EasyPoi,采用Excel模板方式实现Excel在线预览和导出(2021版)

    一.背景:某工厂需要查看指定年度的设备维护计划,一般需要把全年72个周,每个周做哪些维护工作排班排出以及工时统计出来,在正式生成维护工单之前,需要先确认下.维护计划大概是某一周要执行哪些维护项,大概长 ...

  2. vue实现下载EXCEL模板、导入EXCEL文件

    vue实现下载EXCEL模板.导入EXCEL文件 在项目中很常见需要先下载模板,根据模板导入 下面展示一些 下载模板代码片段. 需要有一个下载模板的接口,点击下载触发函数,调用接口,返回下载地址 接口 ...

  3. 321套Excel可视化图表、Excel模板(在Excel里面实现数据可视化),史上最全Excel可视化图表,模板

    321套Excel可视化图表.Excel模板(在Excel里面实现数据可视化),史上最全Excel可视化图表,模板 下载地址:321套Excel可视化图表.Excel模板 运行效果 下载地址:321套 ...

  4. python操作excel模板_Python Excel模板读写,维护公式和格式

    我已经查过了,似乎找不到我要找的东西.我在这里找到的所有线索最后都成了我的死胡同.xlrd.xlwt和xlutils几乎可以满足我的需要,但是-基本思想是,我需要使用Python将简单数据(字符串)写 ...

  5. python读写excel表格_Python写入Excel万能模板源码

    首先将你要写入的数据文件内容存放在Excel中,下面以三国战将战力为案例 #实现python生成Excel内容 import openpyxl #导入excel常用库 #写入Excel表格 def w ...

  6. python生成表格文件_python 读取excel文件生成sql文件实例详解

    python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...

  7. python读取表格数据_Python读取Excel数据并根据列名取值

    一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...

  8. python 解析xml格式_Python解析XML文件

    1.概述 Python有三种方法解析XML:SAX,DOM,以及ElementTree: 1.SAX (simple API for XML ) python 标准库包含SAX解析器,SAX用事件驱动 ...

  9. python打开excel表_Python启动Excel

    通过简单的实例实现Python与Excel程序实现交互控制. 需要安装pywin32,根据自己的实际情况选择下载版本 引入组件import win32com.client, win32process ...

  10. python 写入第二列_python读写Excel表格的实例代码(简单实用)

    这篇文章主要介绍了python读写Excel表格的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下.需要先安装两个库:pip install xlrd.pip ...

最新文章

  1. 【组队学习】【29期】1. 编程实践(数据可视化)
  2. 从数据库导出数据到word、excel、.txt
  3. Got minus one from a read call异常
  4. MySQL Binlog增量同步工具go-mysql-transfer实现详解
  5. 华为新系统鸿蒙有哪些手机_如今鸿蒙手机之后,华为启用新系统,谷歌微软措手不及...
  6. Problem J: Island Buses
  7. pandas读写csv
  8. 集成CAS单点登录 决策系统的配置以及注意事项
  9. HDU5688 Problem D【字符串排序+MAP】
  10. 《Android 3D 游戏案例开发大全》——6.6节游戏界面相关类
  11. springboot集成openoffice实现office转PDF在线预览
  12. 算法设计与分析 SCAU11083 旅游背包(优先做)
  13. 如何减少电气设备漏电问题,其解决方案有哪些?
  14. Confluence 7.2 宏乱码解决办法
  15. 怎样保护计算机桌面不被更改,Win7屏幕保护程序不能修改怎么办 win7无法设置电脑屏幕保护程序如何解决...
  16. Java键盘监听器KeyListener
  17. 《A Comprehensive Study on Waste Segregation Techniques》论文笔记
  18. windows 安装 matplotlib 报错
  19. 不切换 Git 分支,却能同时在多个分支上工作,我是怎么做到的?
  20. 异常代码c0000005

热门文章

  1. CSS实现图片层闪光效果
  2. 使用vue做图片的闪光效果
  3. topcoder使用介绍
  4. opencv用shi-Tomasi角点检测实现目标追踪
  5. 笔记本连不上路由器WiFi,可以连接手机热点,手机可以连接WiFi
  6. 大写金额转换小写数字金额(美图2017线下笔试题)
  7. 二进制数的加法步骤解析
  8. 3D阴影效果css3按钮代码
  9. bittorrent_最好的免费BitTorrent客户
  10. 神仙打架!清华公布2020特奖候选人名单,有人三篇顶会一作!还有人...