首页 > 编程语言 >Python 基于 xlsxwriter 实现百万数据导出 excel

Python 基于 xlsxwriter 实现百万数据导出 excel

时间:2024-03-29 21:11:06浏览次数:28  
标签:sheet Python xlsxwriter excel number path total page row

追加导出 + 自动切换 sheet

⚠️ excel 中的每个 sheet 最多只能保存 1048576 行数据


# 获取项目的根路径 rootPath
curPath = os.path.abspath(os.path.dirname(__file__))  
rootPath = curPath[:curPath.find(你的项目名称 + "/") + len(  
你的项目名称 + "/")]
# 临时文件
local_file_path = os.path.join(rootPath, "temp.xlsx")  
# 检查并删除现有的临时文件  
if os.path.exists(local_file_path):  
    os.remove(local_file_path)
    
sheet_number = 1  
sheet_name_format = "Sheet_{}"

# 数据量大,导出的数据又包含url的话,会疯狂报警告,大家用不到可以删掉
workbook = xlsxwriter.Workbook(local_file_path, options={'strings_to_urls': False})
table = workbook.add_worksheet(sheet_name_format.format(sheet_number))

# sheet 数据总条数
page_total = 0  
# 要写的行
row_number = 1
# 分批导出,每次 100000 条数据
default_limit = 100000
# 分批导出,第 1 页开始
page_number = 1

while True:
	# 分批获取数据
	data_list = get_data_list(page_number, default_limit) # 你的数据
	if len(data_list) == 0:  
		break  
	# sheet总条数,0代表第一次写入数据
	if page_total == 0:  
		# 标题
		header = [你的标题]
		table.write_row(0, 0, header)
		# todo 因为我把每个 sheet 控制在了 100万条,就切换下一个 sheet 了。 
		# todo 如果各位要是玩极限别忘了这里 page_total + 1
	  
	for item in data_list:  
		table.write_row(row_number, 0, list(item.values()))  
		row_number = row_number + 1 
	  
	page_total = page_total + len(data_list)  
	# 自动切换sheet
	if page_total >= 1000000:  
		# 换下一个sheet   
		sheet_number = sheet_number + 1  
		table = workbook.add_worksheet(sheet_name_format.format(sheet_number))  
		# 初始化
		page_total = 0  
		row_number = 1
	page_number = page_number + 1
# 关闭  
workbook.close()

标签:sheet,Python,xlsxwriter,excel,number,path,total,page,row
From: https://www.cnblogs.com/yistack/p/18104628

相关文章

  • python 脚本对数据库的简单操作
    importsqlite3fromdatetimeimportdatetime'''数据库内容[ID]intnull,[loginName]text(50),[loginTime]text(50),[logOutTime]text(50),[operation]intnull'''#连接到数据库conn=sqlite3.connect('test.......
  • Python 基于 xlsxwriter 实现百万数据导出 excel
    增量导出+自动切换sheet⚠️excel中的每个sheet最多只能保存1048576行数据#获取项目的根路径rootPathcurPath=os.path.abspath(os.path.dirname(__file__))rootPath=curPath[:curPath.find(你的项目名称+"/")+len(你的项目名称+"/")]#临时......
  • Python Numpy第三方库的基本使用
    1.下载Numpy第三方库pipinstallnumpy2.导入第三方库importnumpyasnp3.一些基本操作importnumpyasnpnum1=np.array([1,2,3,4,5])#创建数组print(num1)num2=np.zeros((3,2))#创建全零数组print(num2)print(num2.shape)#打印数组尺寸num3=np.ones((2,4))#创建......
  • 文件-Python
    师从黑马程序员文件编码 不同编码,将内容翻译成二进制也是不同的查看文件编码文件的读取文件的概念文件操作内容主要包括打开,关闭,读,写文件的操作步骤open()打开函数mode常用的三种基础访问模式读操作相关方法读操作相关方法close()关闭文件对象wi......
  • 转载:记录一下python setDaemon相关
    前言使用Python都不会错过线程这个知识,但是每次谈到线程,大家都下意识说GIL全局锁,但其实除了这个老生常谈的话题,还有很多有价值的东西可以探索的,譬如:setDaemon()。线程的使用与存在的问题我们会写这样的代码来启动多线程:importtimeimportthreadingdeftest():......
  • Python数据库编程全指南SQLite和MySQL实践
    1.安装必要的库首先,我们需要安装Python的数据库驱动程序,以便与SQLite和MySQL进行交互。对于SQLite,Python自带了支持;而对于MySQL,我们需要安装额外的库,如mysql-connector-python。#安装MySQL连接器pipinstallmysql-connector-python2.连接SQLite数据库SQLite是一......
  • python处理字典之表格-城市排行榜
    #中国城市排行榜importxlrdbook=xlrd.open_workbook('city_data.xls')sheet=book.sheet_by_index(0)main_data_list=[]forrowinrange(3,sheet.nrows):temp_dict={}#print(sheet.row_values(row))temp_dict["城市"]=sheet.row_values(row......
  • python根据达芬奇场景分析保存的edl文件,智能裁切输出4K视频画面(不带声音)-自动找到MP
    使用前先将mp4对应的EDL文件命名为相同的名字,如:春天.mp4,春天.edl只处理持续时间大于5帧的画面批量处理指定文件夹下所有文件,处理失败的直接跳过,接着继续处理其他的 importcv2importosimporttimeimportdatetimeimportshutilfrommoviepy.editorimportVideoFile......
  • 8 在IPython Notebook 运行Python Spark 程序
    8.1安装Anaconda下载:wget https://mirrors.pku.edu.cn/anaconda/archive/Anaconda3-5.3.1-Linux-x86_64.sh安装:bashAnaconda3-5.3.1-Linux-x86_64.sh-b编辑~/.bashrc:sudogedit~/.bashrc source~/.bashrc查看python版本 在data1,data2按同样的方法安装Anaconda8.2......
  • 强烈建议 | 想转行Python最好看一下这篇文章
    python现在非常火,语法简单而且功能强大,很多同学都想学Python!最近陆陆续续有很多小伙伴问我,学Python到底应该做什么,从事哪种岗位。下面是我们工作圈里面一些同学的苦恼:一、转行要趁早上面类似的问题还有很多,我请了一些不同岗位的嘉宾来给大家分享经验,下面谈谈我的感悟:......