1. 程式人生 > >Python 往Excel寫數據

Python 往Excel寫數據

具體實現 需要 初始 數據 keyword () tails 人員 har

一、需求描述:

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 = [email protected]

/* */(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(10)]
# 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寫數據