电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python 使用xlwt模塊將多行多列數據循環寫入excel文檔的操作

瀏覽:53日期:2022-07-05 18:38:14

我就廢話不多說了,大家還是直接看代碼吧~

#!/usr/bin/python# -*- coding: utf-8 -*-import xlwtimport redef host_regex(dataline): host_regex = r'<host>(.*?)</host>' host = re.findall(host_regex, dataline) if host: return host[0]def ip_regex(dataline): ip_regex = r'<ip>(.*?)</ip>' ip = re.findall(ip_regex, dataline) if ip: return ip[0]with open('zbx_export_hosts.xml', 'r', encoding='utf8') as f: lines = f.readlines() alldatas = [] hostlist = [] iplist = [] for line in lines: host = host_regex(line) ip = ip_regex(line) if host is not None: hostlist.append(host) if ip is not None: iplist.append(ip) hosts_ip = [] # 構造數據結構,形如:[[a,b],[c,d],...] multi_list = map(list, zip(hostlist, iplist)) for multi in multi_list: hosts_ip.append(multi) workbook = xlwt.Workbook() worksheet = workbook.add_sheet(’test’) # 關鍵代碼 for hi in enumerate(hosts_ip): for num in range(len(hi[1])): # 行、列、值 worksheet.write(hi[0], num, hi[1][num]) workbook.save(’excelwrite.xls’)

PS:其實有兩行代碼冗余,就不刪了!

補充知識:通過python寫入xlsx大量數據問題簡述

以前批處理生成數據文件都是通過c程序直接按照逗號分隔方式寫文本文件以csv保存的。但是由于有些處理的數據表直接給業務人員看,業務人員習慣使用xls,因此提了些需求改造,對于一些小于100w的數據均要求改為xlsx文件格式的報表。

考慮報表文件數據處理便捷,因此決定用python實現,最初使用了openpyxl庫,這個python庫擁有非常強大的xlsx的讀寫api,能夠很方便的實現讀寫。但是在實際使用中發現在處理較大行數的xlsx時,占用內存非常嚴重,8個字段50w行數據在運行中內存高達10G,這不是我們應用服務器能夠接受的范圍。

因此尋求改善,在網上了解后,發現創建xlsx表時,指定write_only參數是openpyxl提供的大數據寫入解決方案,以下摘自官網范例,在選擇了此參數后,無法通過ws.cell(row=i, column=j).value = ? 的方式復制,只能通過append的方式追加行。關于設置只寫cell設置樣式,可以直接查看官網

>>> from openpyxl import Workbook>>> wb = Workbook(write_only=True)>>> ws = wb.create_sheet()>>>>>> # now we’ll fill it with 100 rows x 200 columns>>>>>> for irow in range(100):... ws.append([’%d’ % i for i in range(200)]) #可以先將一行的數據寫在一個list中,直接ws.append(list)>>> # save the file>>> wb.save(’new_big_file.xlsx’) # doctest: +SKIP

不過僅僅按上述范例修改write_only跑數時發現內存占用并沒有緩解,再仔細閱讀官網說明時才發現這么一句話“When you want to dump large amounts of data make sure you have lxml installed.”原來在openpyxl安裝時,并沒有把lxml作為強依賴,只是一個可選包,然后查實發現確實服務器上并沒有安裝lxml包。

于是與為了解決這個問題先在測試環境上安裝lxml,安裝過程也不是很順利。

首先先要裝libxml2以及libxslt,因為沒有root權限,均為源碼安裝,且只能安裝在用戶目錄。需要注意的是libxml2在安裝時需要--with-python=’python安裝目錄’,libxslt安裝的時候需要指定libxml2安裝目錄。

尤其最后的lxml安裝也是坑挺多的,主要是指定libxml2和libxslt,安裝lxml時先python3 setup.py build_ext -i -I${libxml2includepath} -L${libxml2libpath} -I${libxsltincludepath} -L${libxsltlibpath} ,再python3 setup.py install。

全部安裝完之后,確實openpyxl寫xlsx不再增加內存,先在tmp目錄一個臨時文件中寫,待調用save方法時,保存到正式文件。

此外在這個問題解決中,還了解到writexlsx庫也可以處理大文件xlsx的寫入,并且安裝沒有這么多的依賴,其實還是非常推薦,也很簡介,官網有介紹。

操作大文件時指定{’constant_memory’: True}即可。

filename = ’test.xlsx’wb = xlsxwriter.Workbook(filename, {’constant_memory’: True})ws = wb.add_worksheet(’大文件’)i = 0data= []data.append(’中文’)data.append(1323)data.append(’abc’)ws.write_row(i, 0, data)i = i + 1wb.close() #直接關閉即可,不需要額外save

以上這篇Python 使用xlwt模塊將多行多列數據循環寫入excel文檔的操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: python
相關文章:
主站蜘蛛池模板: 幂简集成 - 品种超全的API接口平台, 一站搜索、试用、集成国内外API接口 | 护腰带生产厂家_磁石_医用_热压护腰_登山护膝_背姿矫正带_保健护具_医疗护具-衡水港盛 | 建筑资质代办-建筑企业资质代办机构-建筑资质代办公司 | 武汉高温老化房,恒温恒湿试验箱,冷热冲击试验箱-武汉安德信检测设备有限公司 | 上海物流公司,上海货运公司,上海物流专线-优骐物流公司 | 圣才学习网-考研考证学习平台,提供万种考研考证电子书、题库、视频课程等考试资料 | 安徽合肥项目申报咨询公司_安徽合肥高新企业项目申报_安徽省科技项目申报代理 | 大鼠骨髓内皮祖细胞-小鼠神经元-无锡欣润生物科技有限公司 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 | 肉嫩度仪-凝胶测试仪-国产质构仪-气味分析仪-上海保圣实业发展有限公司|总部 | 四川职高信息网-初高中、大专、职业技术学校招生信息网 | 不锈钢轴流风机,不锈钢电机-许昌光维防爆电机有限公司(原许昌光维特种电机技术有限公司) | 换链神器官网-友情链接交换、购买交易于一体的站长平台 | 水质传感器_水质监测站_雨量监测站_水文监测站-山东水境传感科技有限公司 | 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 硅PU球场、篮球场地面施工「水性、环保、弹性」硅PU材料生产厂家-广东中星体育公司 | 安徽净化工程设计_无尘净化车间工程_合肥净化实验室_安徽创世环境科技有限公司 | 聚丙烯酰胺_厂家_价格-河南唐达净水材料有限公司 | ph计,实验室ph计,台式ph计,实验室酸度计,台式酸度计 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 风化石头制砂机_方解石制砂机_瓷砖石子制砂机_华盛铭厂家 | 郑州宣传片拍摄-TVC广告片拍摄-微电影短视频制作-河南优柿文化传媒有限公司 | 杭州代理记账费用-公司注销需要多久-公司变更监事_杭州福道财务管理咨询有限公司 | 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 考勤系统_人事考勤管理系统_本地部署BS考勤系统_考勤软件_天时考勤管理专家 | 消防设施操作员考试报名时间,报名入口,报考条件 | 雷冲击高压发生器-水内冷直流高压发生器-串联谐振分压器-武汉特高压电力科技有限公司 | 颗粒机,颗粒机组,木屑颗粒机-济南劲能机械有限公司 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 哈尔滨京科脑康神经内科医院-哈尔滨治疗头痛医院-哈尔滨治疗癫痫康复医院 | 步进驱动器「一体化」步进电机品牌厂家-一体式步进驱动 | 水性绝缘漆_凡立水_绝缘漆树脂_环保绝缘漆-深圳维特利环保材料有限公司 | 无锡门窗-系统门窗-阳光房-封阳台-断桥铝门窗厂[窗致美] | 安徽合肥项目申报咨询公司_安徽合肥高新企业项目申报_安徽省科技项目申报代理 | 全自动烧卖机厂家_饺子机_烧麦机价格_小笼汤包机_宁波江北阜欣食品机械有限公司 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 防水套管厂家-柔性防水套管-不锈钢|刚性防水套管-天翔管道 | 薪动-人力资源公司-灵活用工薪资代发-费用结算-残保金优化-北京秒付科技有限公司 | 股指期货-期货开户-交易手续费佣金加1分-保证金低-期货公司排名靠前-万利信息开户 |