一、需求描述:

1、一张人员信息表中生成人员信息,某些列的字段要进行递增操作;

2、一个组织节点下存在1000人的限制要求;

3、一张Excel表格生成45000条数据;

二、Excel表格的表头如下:

三、相关操作

1、写Excel,首先需要安装xlwt模块;

2、可以采用pip的安装方式,安装方式如下图所示:

3、安装完成后,开始编写我们的程序:

首先需要明确几个函数的用法:

1、enumerate()

  详细介绍:

2、format()

  格式化数据

3、yield相关知识

  详细介绍:http://blog.csdn.net/alvine008/article/details/43410079

写数据基本操作:

创建工作簿(workbook)和工作表(sheet):

import xlwt
workbook = xlwt.Workbook()
sheet = workbook.add_sheet("Sheet Name")

写单元格(cell):

sheet.write(0, 0, 'foobar') # row, column, value

对单元格应用样式(加粗为例):

style = xlwt.easyxf('font: bold 1')
sheet.write(0, 0, 'foobar', style)

具体实现代码:

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

'''
1、第一步:我们需要引入xlwt模块:import xlwt
2、第二步:创建一个excel表格
3、第三步:定义需要自增字段的起始值
4、第四步:初始化表格:sheet页、样式、表头填充
5、第五步:按照每行进行数据写入,1个部门节点人数限制为1000人
'''

import xlwt

EXCEL_NAME = 'employees_mock.xls'

PHONE_NUM = 13805710001
EMP_NUM = 482501
EMAIL_PREFIX = 333019041
SUB_PHONE_NUM = 478180
OFFICE_SUFFIX = 12771500
VIRTUAL_NET = 123456
TELGRAM_PHONE_NUM = 15370032950 def employe(depart, count):
for _ in range(1000):
name = u'工作人员{}'.format(count)
phone_num = str(PHONE_NUM + count)
gender = u'男'
emp_num = str(EMP_NUM + count)
is_charger = u'否'
job = u'开发'
email = u'{}@foo.com'.format(EMAIL_PREFIX + count)
sub_phone_num = SUB_PHONE_NUM + count
addr = u'杭州滨江'
remark = u'测试'
office = u'信息安全管理员'
position = u'管理岗位'
bureau = u'发发发'
office_phone_num = u'0571-{}'.format(OFFICE_SUFFIX)
v_net = u'192.168.1.{}'.format(count % 256)
tel_phone_num = str(TELGRAM_PHONE_NUM + count)
tel_net = u'192.168.0.{}'.format(count % 256)
yield [
depart,
name,
phone_num,
gender,
emp_num,
is_charger,
job,
email,
sub_phone_num,
addr,
remark,
office,
position,
bureau,
office_phone_num,
v_net,
tel_phone_num,
tel_net
]
count += 1 def style():
##赋值style为XFStyle(),初始化样式
style = xlwt.XFStyle()
#设置单元格内字体样式
font = xlwt.Font()
font.name = 'Times New Roman'
font.bold = False return style #写Excel
def write_excel():
wb = xlwt.Workbook()#创建工作簿
sheet = wb.add_sheet(u'sheet1', cell_overwrite_ok=True)#创建第一个sheet页 第二参数用于确认同一个cell单元是否可以重设值
#初始化表头列表
tb_head = [
u'部门',
u'姓名',
u'手机号',
u'性别',
u'工号',
u'是否此部门主管(是/否)',
u'职位',
u'邮箱',
u'分机号',
u'办公地点',
u'备注',
u'职务',
u'岗位',
u'办公室',
u'办公电话',
u'虚拟网',
u'电信手机号',
u'电信虚拟网'
] for i, item in enumerate(tb_head):
sheet.write(0, i, item, style()) return wb def main():
wb = write_excel()
table = wb.get_sheet(0) # insert 10k mock employee data
deps = [u'浙江省-反贪局-分局{}'.format(i + 1) for i in range(50)]
# deps.extend(
# [u'浙江省-工商局-分局{}'.format(i) for i in range(10)]
# )
# deps.extend(
# [u'陕西省-计划生育局-分局{}'.format(i) for i in range(10)]
# )
for c, dep in enumerate(deps):
count = 1000 * c + 1
for row, emp in enumerate(employe(dep, count)):
for col, item in enumerate(emp):
table.write(row + count, col, item)
#保存文件
wb.save(EXCEL_NAME) if __name__ == '__main__':
main()

Python 往Excel写数据的更多相关文章

  1. python读取excel所有数据(cmd界面)

    python读取excel所有数据(cmd界面) cmd界面显示excel数据 代码 import xlrd import os from prettytable import PrettyTable ...

  2. [转] Windows下使用Python读取Excel表格数据

    http://www.python-excel.org/这个网站罗列了很多关于在Python下操作Excel文件的信息,这里选择了其介绍的第一个模块xlrd . xlrd 0.9.2版本跨平台同时支持 ...

  3. 利用python对excel进行数据剔除

    需求分析: 判断excel2表中的某个唯一字段是否满足条件,如果满足条件,就在excel1中进行查询,若存在excel中,就将该数据进行剔除. python脚本的实现: from __future__ ...

  4. php操作EXCLE(通过phpExcle实现向excel写数据)

    php通过phpExcel进行写excel <?phprequire_once('/PHPExcel.php');require_once('/PHPExcel/Writer/Excel2007 ...

  5. java向excel写数据

    package pymongo1; import java.io.File;import java.io.IOException;import java.io.OutputStream; import ...

  6. Python操纵Excel,数据库

    操作excelxlwt:写入excel表格 ,用这个之前需要先导入模块 xlwt: import xlwtxlrd:读取excel,用这个之前需要先导入模块 xlwt:import xlrd 注意:e ...

  7. python 操作excel openpyxl

    1 安装 pip install openpyxl 如果装不上,请指定安装源来安装 pip install -i https://pypi.douban.com/simple openpyxl 如果e ...

  8. Python操作 Excel表格

    python 读写 excel 有好多选择,但是,方便操作的库不多,在我尝试了几个库之后,我觉得两个比较方便的库分别是 xlrd/xlwt.openpyxl. 我使用openpyxl 安装: pip ...

  9. openpyxl python操作Excel表格,

    这里openpyxl只支持xlsx格式的Excel,openpyxl使用起来会更方便一些,所以如果只操作小流水线文件的话,那么可以优先选择openpyxl,如果要兼容xls的话,就使用xlrd/xlw ...

随机推荐

  1. STM32延时函数的四种方法

    单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us()和毫秒级delay_ms().本文基于STM32F207介绍4种不同方式实现的延时函数. 1.普通延时 这种延时方式应该是 ...

  2. eCATT使用前的配置

    如果想在SAP中使用eCATT,必须做一下相关的配置才行,下面简单介绍这几步:1.SM30,输入表T000,然后点击维护,或者是进入事物SCC4,进入对应的clint属性编辑视图下,将CATT and ...

  3. OpenDaylight — YANG

    1. 介绍 YANG 是一种用于为 NETCONF 协议建模数据的语言. YANG 将数据的层次结构建模为一棵树. 2. 节点类型 2.1 leaf 它只有一个特定类型的值,并且没有子节点. YANG ...

  4. Maven 知识点总结以及解决jar报冲突的几种方法

    1.常见的命令 Compile Test Package Install Deploy Clean 2.坐标的书写规范 groupId 公司或组织域名的倒序 artifactId 项目名或模块名 ve ...

  5. java-数据类型复习

    java中共有8种基本的数据类型,分别为 字节型byte(8字节,32位),短整型short(16字节),整型int(32字节),长整型long(64字节), 字符型char(16字节),浮点型flo ...

  6. loj10018数的划分

    题目描述 将整数 n 分成 k 份,且每份不能为空,问有多少种不同的分法.当 n=7,k=3 时,下面三种分法被认为是相同的:1 1 5;1 5 1 ;5 1 1 输入格式 一行两个数 n ,k . ...

  7. ThinkPHP3.2.4 order方法注入

    漏洞详情: 漏洞文件:./ThinkPHP\Library\Think\Db\Driver.class.php 中的 parseOrder方法: 这也是继上次order方法注入之后的修复手段. 可以看 ...

  8. Mapper查询技巧

    Sql字段动态比较判断 <sql id="getUserInfoList_body"> SELECT * from userinfo <dynamic prepe ...

  9. JVM 参数的设置及解析

    JVM 参数的设置及解析 1.关于JVM配置: 2.Linux JVM设置: 1.关于JVM配置: 设置jvm内存的参数有四个: -Xmx 设置堆(Java Heap)最大值,默认值为物理内存的1/4 ...

  10. Cisco动态路由(rip)

    接Cisco静态路由,讨论一下Cisco动态路由. 实验环境布置 命令布置动态路由 Router0: Router>enable Router#configure terminal Router ...