python 导出数据到excel 中,一个好用的导出数据到excel模块,XlsxWriter
最近公司有项目需要导出数据到excel,首先想到了,tablib,xlwt,xlrd,xlwings,win32com[还可以操作word],openpyxl,等模块但是 实际操作中tablib 写入数据速度慢,操作简单,支持xlsx,[文件生成较大],貌似一次最多写入65536条行xlwt 写入速度比tablib 约快一倍,一次最大写入行数65536条,不支持xlsx 后缀文件,xlwings 写入速度和tablib貌似差不多,以上测试一次性写入65536条,45列
win32com 写入速度较快但是不支持跨平台,只能在win环境下openpyxl 简单看了下没有测试xlsxWriter 写入较快[貌似只有xlwt一半时间],支持设置样式,各种表格,函数等,测试数据8w条35列。 最大写入貌似1048576行16384列,只支持创建文件,所以笔者选择了xlsxwriter,实际学习中发现官方文档还是一如既往是英文的。以下是笔者自己整理的教程,不喜勿喷以上是笔者自己测试所得,实际效果要视应用场景,运行环境,数据量,机器配置,有所不同。如若读者自己所测 数据有所不同,欢迎指正。 XlsxWriter是一个Python模块,可用于在Excel + XLSX文件中将文本,数字,公式和超链接写入多个工作表。它支持格式化等功能,包括: %兼容的Excel XLSX文件。 完整格式化。 合并细胞。 定义名称。 图表。 自动筛选。 数据验证和下拉列表。 条件格式。 工作表PNG / JPEG / BMP / WMF / EMF图像。 丰富的多格式字符串。 细胞评论。 文本框。 与熊猫整合。 用于写入大文件的内存优化模式。 它支持Python 2.5,2.6,2.7,3.1,3.2,3.3,3.4,3.5,3.6,Jython和PyPy,仅使用标准库。#英文文档:https://xlsxwriter.readthedocs.io/
安装pip install XlsxWriteorpip install --user XlsxWriter 如果pip 无法使用可以使用easy_installeasy_install XlsxWriter #easy_install 百度百科:https://baike.baidu.com/item/easy_install#更多:http://peak.telecommunity.com/DevCenter/EasyInstall 使用GitHub
$ curl -O -L http://github.com/jmcnamara/XlsxWriter/archive/master.tar.gz $ tar zxvf master.tar.gz $ cd XlsxWriter-master/ $ python setup.py install
#Sample demo 创建一个excel文件import xlsxwriter as xw
workbook = xw.Workbook('hello_world.xlsx')
worksheet=workbook.add_worksheet("sheet 名称")#还可以设置样式worksheet_class
worksheet.write('A1','HelloWorld')
row=
col=
worksheet.write(row,col,'第二种方式!')
workbook.close()#会在当前目录生成一个hello_world.xlsx 文件
#XlsxWriter只能创建新文件,不能读取或者修改现有文件#write()方法支持两种形式的表示法来指定单元格的位置:行列表示法和A1表示法:
excel 中方法的使用 excel函数的使用workbook=xw.Workbook('Expenses01.xlsx')
worksheet=workbook.add_worksheet('sheet 名称')
expenses = (
[],
[],
[],
[],
)
#在XlsxWriter 中 行和列 都是零 索引,A1 是(0,0) ; (0,0)是A1
row=
col=
# for item,cost in (expenses):
# worksheet.write(row,col,item)
# worksheet.write(row,col+,cost)
# row+=
for item,cost in expenses:
worksheet.write(row,col,item)
worksheet.write(row,col+,cost)
row+=
worksheet.write(row,,'合计:')
worksheet.write(row,,'=SUM(B1:B4)')
worksheet_2=workbook.add_worksheet('sheet_2')#在添加一个工作表worksheet_2.write(0,0,'写入内容')
#关闭excel 文件 释放资源 workbook.close()
Smaple:添加样式
workbook=xw.Workbook('Expenses01.xlsx')
worksheet=workbook.add_worksheet('sheet 名称')
expenses = (
[],
[],
[],
[],
)
row=
col=
#添加样式
style = workbook.add_format(
{
'bold':True,#粗体
'bg_color':'yellow',#背景颜色
'align':'left',#水平方向:居左,
'valign':'top'#垂直方向:顶部
}
)
style_2 =workbook.add_format(
{
'bold': True, # 粗体
'bg_color': 'yellow', # 背景颜色
}
)#美元符号money_style = workbook.add_format( { 'num_format':'$#,##0' })
for item,cost in expenses:
worksheet.write(row,col,item)
worksheet.write(row,col+,cost)
row+=
worksheet.write(row,,'合计:',style)
#worksheet.write(row,,'=SUM(B1:B4)',style_2)worksheet.write(row,1,'=SUM(B1:B4)',money_style)
worksheet_2=workbook.add_worksheet('sheet_2')
worksheet_2.write(,,'写入内容')
workbook.close()
from datetime import datetime
import xlsxwriter
workbook = xlsxwriter.Workbook('Expenses03.xlsx')
worksheet = workbook.add_worksheet()
# 添加格式
bold = workbook.add_format({})
# 添加格式
money_format = workbook.add_format({'num_format': '$#,##0'})
# 添加格式
date_format = workbook.add_format({'num_format': 'mmmm d yyyy'})
# 设置列的宽度
worksheet.set_column(, , )
worksheet.write('A1', 'Item', bold)
worksheet.write('B1', 'Date', bold)
worksheet.write('C1', 'Cost', bold)
expenses = (
[],
[],
[],
[],
)
row =
col =
for item, date_str, cost in (expenses):
# 将日期字符串转换为datetime对象。
date = datetime.strptime(date_str, "%Y-%m-%d")
worksheet.write_string(row, col, item)
worksheet.write_datetime(row, col + , date, date_format)
worksheet.write_number(row, col + , cost, money_format)
row +=
worksheet.write(row, , '总和', bold)
worksheet.write(row, , '=SUM(C2:C5)', money_format)
workbook.close()
更多方法:
write_string()write_number()write_blank()write_formula()write_datetime()write_boolean()write_url()
处理数据的规则write()如下:
- 数据类型
float,int,long,decimal.Decimal和fractions.Fraction使用写write_number()。 - 数据类型
datetime.datetime,或使用写入 。datetime.datedatetime.timedatetime.timedeltawrite_datetime() None和空字符串""使用write_blank()。- 数据类型
bool使用write_boolean()。
#excel 合并单元格,设置行高,设置样式
import xlsxwriter as xw
workbook = xw.Workbook('hello_world.xlsx')
worksheet=workbook.add_worksheet("sheet 名称")#还可以设置样式worksheet_class
merge_format = workbook.add_format({
'bold': True,
'border': 6,
'align': 'center',#水平居中
'valign': 'vcenter',#垂直居中
'fg_color': '#D7E4BC',#颜色填充
})
#合并单元格
worksheet.merge_range('B3:D4', 'Hello World !', merge_format)
or
first_row=4
first_col=4
last_row=8
last_col=8
worksheet.merge_range(first_row,first_col,last_row,last_col,write_content,merge_format)
worksheet.set_column('B:D', 12)#设置B-D的单元格宽度为12
worksheet.set_row(3, 30)#设置第4行的高度为30
worksheet.set_row(6, 30)#设置第7行的高度为30
worksheet.set_row(7, 30)#设置第8行的高度为30
workbook.close()
由于笔者项目 业务 只需要用到以上知识,因为项目进度,所以就没有接着学习下去了,大家可以自己去官网深入学习。https://xlsxwriter.readthedocs.io/
python 导出数据到excel 中,一个好用的导出数据到excel模块,XlsxWriter的更多相关文章
- 使用POI把查询到的数据表数据导出到Excel中,一个表一个sheet.最详细!!!
一.需求 我们会遇到开发任务: 经理:小王,你来做一下把数据库里的数据导出到Excel中,一个表是一个sheet,不要一个表一个Excel. 小王:好的,经理.(内心一脸懵逼) 二.前期准备 首先我们 ...
- TypeToken 是google提供的一个解析Json数据的类库中一个类
Type listType = new TypeToken<LinkedList<User>>(){}.getType(); Type是java里的reflect包的Type ...
- 【Excle数据透视表】如何得到数据透视表中某个汇总行的明细数据
例如: 现在想得到"北京 汇总"的明细数据,该怎么处理呢? 步骤 右键数据透视表任意单元格→数据透视表选项→启用显示明细数据→确定→单击"北京 汇总"行最后一个 ...
- 完爆Excel!一个令人惊艳的数据展示工具,让你做图更轻松高效
数据展示应该是最常见的需求,我们经常利用数据做总结.用数据做分享.但是我们该如何更好地展示给我们需要展示的人,如何才能让我们的数据表达更加动人,这个值得让人思索. 说到数据表达,常用的数据展示方式无非 ...
- python构建bp神经网络_曲线拟合(一个隐藏层)__1.可视化数据
1.将数据写入csv文件,应该可以python代码直接实现数据集的写入,但我对文件读取这块不太熟练,等我成功了再加上,这里我直接手写将数据集写入Excel 2.然后把后缀改成.csv就可以了,利用pa ...
- 【WPF学习笔记】之如何保存画面上新建的数据到数据库中并且删除画面上的数据和数据库的数据:动画系列之(五)
...... 承接系列四后续: 首先,我要在用户控件2中添加“保存”,“删除”按钮. XAML代码: <UserControl x:Class="User.uc_item" ...
- .net导入excel数据到数据库中
在开发过程中我们经常面临着需要将数据导出或者导入到系统中,例如一些生产管理系统,项目管理系统等等都会有这样的需求: 将excel数据到系统中思路:获取excel中每一行的数据,然后存入集合中,批量添加 ...
- MySQL导出数据到文件中的方法
MySQL导出数据到文件中的方法 1.导出数据到txt文件中实例:把数据表studscoreinfo中所有数据导出到指定的位置方法:select * from 表名 into outfile 指定导出 ...
- excel导出的时候从程序后台写到excel里的是文本,所以无法在excel中计算怎么办?
文章引用自:http://www.cnblogs.com/rayray/p/3414452.html excel导出的时候从程序后台写到excel里的是文本,所以无法在excel中计算怎么办? 需要导 ...
- 使用navicat for sqlserver 把excel中的数据导入到sqlserver数据库
以前记得使用excel向mysql中导入过数据,今天使用excel向sqlserver2005导入了数据,在此把做法记录一下 第一步:准备excel数据,在这个excel中有3个sheet,每个she ...
随机推荐
- 在Windows2008下安装SQL Server 2005无法启动服务的解决办法
在Windows2012下安装SQL Server 2005无法启动服务的解决办法 1.正常安装任一版本的SQL Server 2005. 2.安装到SqlServer服务的时候提示启动服务失败 此 ...
- 嵌入式 printf函数
来自:https://www.cnblogs.com/02xiaoma/archive/2012/06/22/2558618.html #include <stdio.h> #includ ...
- docker镜像的常用操作
获取镜像 比如说我们可以这样操作 当然把这个镜像拉过来时间非常长. 查看镜像列表 命令: docker images 说明: 使用docker images命令可以列出本地主机上已有的镜像. 信息 ...
- jquery操作select下拉框的各种方法,获取选中项的值或文本,根据指定的值或文本选中select的option项等
简介jquery里对select进行各种操作的方法,如联动.取值.根据值或文本来选中指定的select下拉框指定的option选项,读取select选中项的值和文本等. 这一章,站长总结一下jquer ...
- Windows环境下在sublime text3配置C编译环境
1. 检查本机有没有安装GCC,没有的话先进行安装 2. 选择 sublime 的Tools->Build System->New Build System,建立配置文件,文件命名为C.s ...
- 利用JAVA API函数实现数据的压缩与解压缩
综述 许多信息资料都或多或少的包含一些多余的数据.通常会导致在客户端与服务器之间,应用程序与计算机之间极大的数据传输量.最常见的解决数据存储和信息传送的方法是安装额外的存储设备和扩展现有的通讯能力 ...
- MySQL 设置cmd命令行登陆
1.MySQL自带工具的存放路径: D:\Program Files\MySQL\MySQL Server 5.6\bin 为了方便使用,我们可以将以上路径添加到系统的环境变量path中 如果你不放, ...
- html5自带表单验证
起因:今天无意中发现chrome的input框自带表单验证!于是就去试试firefox,惊奇的发现也有自带的验证提示,只不过两者的样式不一样 chrome中的样子: firefox中的样子: 发散:具 ...
- Hadoop2.0环境安装
0. Hadoop源码包下载 http://mirror.bit.edu.cn/apache/hadoop/common 1. 集群环境 操作系统 CentOS7 集群规划 Master 192.16 ...
- sys模块学习记录
import sys s = sys.argv #命令行参数List,第一个元素是程序本身路径 #sys.exit() #退出程序,正常退出时exit(0) s = sys.version #获取Py ...