python如何创建excel文件_Python xlrd/xlwt 创建excel文件及常用操作

一、创建excel代码

备注:封装好了(可直接调用)

"""

-*- coding:utf-8 -*-

@Time :2020/8/20 21:02

@Author :Jarvis

@File :jar_excel_util.py

@Version:1.0

"""

from typing import List

import xlwt

class JarExcelUtil:

def __init__(self, header_list: List[list]):

"""

:param header_list: 如下格式

例1:默认列宽

header_list = [

['序号'], # 表格第0列[此列表头名称]

['姓名'],

['性别'],

['爱好'],

['生日']

]

例2:自定义列宽(列宽值为int类型 英文字符长度 如:10 表示列宽为10个英文字符长度)

header = [

['序号', 5], # 表格第0列[此列表头名称,列宽]

['姓名', 10], # 表格第1列[此列表头名称,列宽]

['性别', 10],

['爱好', 10],

['生日', 20]

]

"""

self.data = header_list

self.__color_str = 'aqua 0x31\r\n\

black 0x08\r\n\

blue 0x0C\r\n\

blue_gray 0x36\r\n\

bright_green 0x0B\r\n\

brown 0x3C\r\n\

coral 0x1D\r\n\

cyan_ega 0x0F\r\n\

dark_blue 0x12\r\n\

dark_blue_ega 0x12\r\n\

dark_green 0x3A\r\n\

dark_green_ega 0x11\r\n\

dark_purple 0x1C\r\n\

dark_red 0x10\r\n\

dark_red_ega 0x10\r\n\

dark_teal 0x38\r\n\

dark_yellow 0x13\r\n\

gold 0x33\r\n\

gray_ega 0x17\r\n\

gray25 0x16\r\n\

gray40 0x37\r\n\

gray50 0x17\r\n\

gray80 0x3F\r\n\

green 0x11\r\n\

ice_blue 0x1F\r\n\

indigo 0x3E\r\n\

ivory 0x1A\r\n\

lavender 0x2E\r\n\

light_blue 0x30\r\n\

light_green 0x2A\r\n\

light_orange 0x34\r\n\

light_turquoise 0x29\r\n\

light_yellow 0x2B\r\n\

lime 0x32\r\n\

magenta_ega 0x0E\r\n\

ocean_blue 0x1E\r\n\

olive_ega 0x13\r\n\

olive_green 0x3B\r\n\

orange 0x35\r\n\

pale_blue 0x2C\r\n\

periwinkle 0x18\r\n\

pink 0x0E\r\n\

plum 0x3D\r\n\

purple_ega 0x14\r\n\

red 0x0A\r\n\

rose 0x2D\r\n\

sea_green 0x39\r\n\

silver_ega 0x16\r\n\

sky_blue 0x28\r\n\

tan 0x2F\r\n\

teal 0x15\r\n\

teal_ega 0x15\r\n\

turquoise 0x0F\r\n\

violet 0x14\r\n\

white 0x09\r\n\

yellow 0x0D'

self.color_list = [] # [[]] [['aqua', '0x31'], ['black', '0x08'], ...]

for color in self.__color_str.split('\r\n'):

color = color.split(' ')

self.color_list.append(color)

def write(self, out_file, data_body: List[list], sheet_name='sheet', frozen_row: int = 1, frozen_col: int = 0):

"""

写入数据

:param out_file: 保存文件(如:test.xlsx)

:param data_body: data_body[0]为表格第0行数据 data_body[0][0]为表格第0行第0列单元格值

:param sheet_name:

:param frozen_row: 冻结行(默认首行)

:param frozen_col: 冻结列(默认不冻结)

"""

# step1 判断数据正确性(每行列数是否与表头相同)

count = 0

for pro in data_body:

if len(pro) != len(self.data):

raise Exception(

'data_body数据错误 第{}行(从0开始) 需为{}个元素 当前行{}个元素:{}'.format(count, len(self.data), len(pro), str(pro)))

count += 1

# step2 写入数据

wd = xlwt.Workbook()

sheet = wd.add_sheet(sheet_name)

ali_horiz = 'align: horiz center' # 水平居中

ali_vert = 'align: vert center' # 垂直居中

fore_colour = 'pattern: pattern solid,fore_colour pale_blue' # 设置单元格背景色为pale_blue色

# 表头格式(垂直+水平居中、表头背景色)

style_header = xlwt.easyxf('{};{};{}'.format(fore_colour, ali_horiz, ali_vert))

# 表体格式(垂直居中)

style_body = xlwt.easyxf('{}'.format(ali_vert))

# 表头

for col in self.data:

# 默认列宽

if len(col) == 1:

sheet.write(0, self.data.index(col), str(col[0]), style_header)

# 自定义列宽

if len(col) == 2:

sheet.write(0, self.data.index(col), str(col[0]), style_header)

# 设置列宽

sheet.col(self.data.index(col)).width = 256 * col[1] # 256为基数 * n个英文字符

# 行高(第0行)

sheet.row(0).height_mismatch = True

sheet.row(0).height = 20 * 20 # 20为基数 * 20榜

# 表体

index = 1

for pro in data_body:

sheet.row(index).height_mismatch = True

sheet.row(index).height = 20 * 20 # 20为基数 * 20榜

for d in self.data:

value = pro[self.data.index(d)]

# 若值类型是int、float 直接写入 反之 转成字符串写入

if type(value) == int or type(value) == float:

sheet.write(index, self.data.index(d), value, style_body)

else:

sheet.write(index, self.data.index(d), str(value), style_body)

index += 1

# 冻结(列与行)

sheet.set_panes_frozen('1')

sheet.set_horz_split_pos(frozen_row) # 冻结前n行

sheet.set_vert_split_pos(frozen_col) # 冻结前n列

wd.save(out_file)

def color_test(self):

"""

测试颜色

"""

body_t = []

for color in self.color_list:

print(color)

body_t.append(color)

wd = xlwt.Workbook()

sheet = wd.add_sheet('sheet')

index = 0

for b in body_t:

ali = 'align: horiz center;align: vert center' # 垂直居中 水平居中

fore_colour = 'pattern: pattern solid,fore_colour {}'.format(

self.color_list[index][0]) # 设置单元格背景色为pale_blue色

style_header = xlwt.easyxf(

'{};{}'.format(fore_colour, ali))

sheet.write(index, 0, str(b), style_header)

sheet.col(0).width = 256 * 150 # 256为基数 * n个英文字符

index += 1

wd.save('颜色测试.xlsx')

# 测试颜色

# if __name__ == '__main__':

# header_t = [

# ['颜色']

# ]

# JarExcelUtil(header_t).color_test()

if __name__ == '__main__':

header = [

['序号', 5],

['姓名', 10],

['性别', 10],

['爱好', 10],

['生日', 20]

]

# header = [

# ['序号'],

# ['姓名'],

# ['性别'],

# ['爱好'],

# ['生日']

# ]

body = [

[1, '张三', '男', '篮球', '1994-07-23'],

[2, '李四', '女', '足球', '1994-04-03'],

[3, '王五', '男', '兵乓球', '1994-09-13']

]

JarExcelUtil(header_list=header).write(out_file='测试.xlsx', data_body=body)

二、效果

生成的Excel

三、常用操作

3.1、设置行高

# 行高(第0行)

sheet.row(0).height_mismatch = True

sheet.row(0).height = 20 * 20 # 20为基数 * 20榜

3.2、设置列宽

# 列宽(第0列)

sheet.col(0).width = 256 * 30 # 256为基数 * 30个英文字符(约)

3.3、冻结(列与行)

# 冻结(列与行)

sheet.set_panes_frozen('1')

sheet.set_horz_split_pos(2) # 冻结前2行

sheet.set_vert_split_pos(3) # 冻结前3列

# 冻结首行

sheet.set_panes_frozen('1')

sheet.set_horz_split_pos(1) # 冻结前1行(即首行)

3.4、设置单元格对齐方式

# 方式1

style_1 = xlwt.XFStyle()

al_1 = xlwt.Alignment()

al_1.horz = xlwt.Alignment.HORZ_CENTER # 水平居中

al_1.vert = xlwt.Alignment.VERT_CENTER # 垂直居中

style_1.alignment = al_1

sheet.write(0, 0, '第0行第0列单元格值', style_1)

# 方式2(推荐)

ali_horiz = 'align: horiz center' # 水平居中

ali_vert = 'align: vert center' # 垂直居中

style_2 = xlwt.easyxf('{};{}'.format(ali_horiz, ali_vert))

sheet.write(0, 0, '第0行第0列单元格值', style_2)

3.5、设置单元格背景色

# 设置单元格背景色

fore_colour = 'pattern: pattern solid,fore_colour pale_blue' # 设置单元格背景色为pale_blue色 (具体颜色值 参考上面代码JarExcelUtil类中的color_test方法的运行结果)

style = xlwt.easyxf('{}'.format(fore_colour))

sheet.write(0, 0, '第0行第0列单元格值', style)

以上就是Python xlrd/xlwt 创建excel文件及常用操作的详细内容,更多关于python 操作excel的资料请关注我们其它相关文章!

本文标题: Python xlrd/xlwt 创建excel文件及常用操作

本文地址: http://www.cppcns.com/jiaoben/python/349018.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最通俗易懂的依赖注入之服务注册与注入

推荐关注「码侠江湖」加星标,时刻不忘江湖事这篇文章是 ASP.NET 6 依赖注入系列文章的第 4 篇,点击上方蓝字可以阅读整个系列。在上一篇文章中,我们讨论了依赖注入的服务容器与服务作用域。接下来,在这篇文章中,我们继…

linux之可视化查看磁盘大小并且删除大文件

1 问题 可视化查看磁盘大小并且删除大文件,之前我一直没有找到好的办法,原谅我的无知。 2 操作 我们直接搜索Disk Usage Analyzer 然后一个一个目的的点击查看,如下图 我们就可以清晰的看到文件占用大小,我们就可以很好的删除了…

php Heredoc应用说明

Heredoc部分实现界面与代码的准分离 我们如下的例子可以了解 Heredoc&#xff1a; <?php $name http://blog.csdn.net/a757291228; echo <<<HRERDOC <html> <head> <title>http://blog.csdn.net/a757291228</title> </head>…

C#委托、事件学习之(一)——委托事件描述

1、委托是一个类,定义了方法的类型,使得该方法可以作为其他方法的参数。避免了if...else的大量使用。 using System;namespace ConsoleApplication1 {public class GreetPeople{public delegate void GreetEventHander(object sender, GreetEventArgs e);public event Greet…

个人空间风格模版php,ThinkPHP 模板布局

模块继承 {extend name"" /}{block name""}{/block}基础模板 base.html子模板 块区在子模板中&#xff0c;可以对基础模板中的区块进行重载定义&#xff0c;如果没有重新定义的话&#xff0c;则表示沿用基础模板中的区块定义&#xff0c; 如果定义了一个空…

Win10用户远超4亿 Win10 RS2明年年初发布

10月26日晚22:00&#xff0c;微软Win10新品发布会在纽约芝士举行。发布会前&#xff0c;微软宣布目前最新的操作系统Windows 10已经迎来了4亿的用户&#xff0c;Windows 10的使用小时数&#xff0c;已经达到了2000亿&#xff0c;游戏时间也增长了500%。 同时微软还宣布&#xf…

bootstrap导航

HTML <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IE-edge"><!-- 开启IE8渲染模式 --><meta name"viewport" cont…

一个类可以实现多个接口吗_Java入门:基础知识(面向对象:接口)

接着上一篇的基础知识&#xff0c;今天俺们来学习一下&#xff1a;面向对象(万物皆对象)三大特征(封装、继承、多态)接口接口 概述&#xff1a;接口是一种引用数据类型&#xff0c;是方法的集合&#xff0c;接口的内部主要是定义方法&#xff0c;包含常量、抽象方法(JDK7及以…

剑指offer之判断链表是否包含环

1 问题 判断链表是否包含环 2 思路 2个指针&#xff0c;一个指针走一步&#xff0c;一个指针走2步&#xff0c;如果相遇则有&#xff0c;反之无。 3 代码实现 #include <stdio.h> #include <stdlib.h>#define true 1 #define false 0;typedef struct node {int …

生成条形码二维码DataMatrix条码.EAN码.39码.交叉25码.UPC码.128码.93码.ISBN码.Codabar等...

1.引用Spire.Barcode在Nuget包中安装Spire.Barcode2.生成条形码//创建 BarcodeSettings对象BarcodeSettings settings new BarcodeSettings();//设置条形类型为EAN-13settings.Type BarCodeType.EAN13;//设置条形码数据settings.Data "58465157484";//使用校检set…

php Trait 基础应用讲解

首先&#xff0c;上手册&#xff1a;自 PHP 5.4.0 起&#xff0c;PHP 实现了一种代码复用的方法&#xff0c;称为 trait。 随后。。。来讲解trait的用法&#xff1a; trait first_trait {function first_trait() {//里面写你想写的代码}function second_trait() {//里面写你想…

用UIpickView实现省市的联动

#import <UIKit/UIKit.h> interface ViewController : UIViewController<UIPickerViewDataSource,UIPickerViewDelegate> property(strong,nonatomic)UIPickerView *pickView; //定义一个可变数组用于存放省的数据 property(strong,nonatomic)NSMutableArray *Stat…

encodingaeskey java,消息体签名与加解密-开发者QA

Q 为什么要上线消息加密功能&#xff1f;A 为了更好的保护用户和公众账号的信息安全。Q 接入消息加解密功能复杂吗&#xff1f;A 开发者接入消息加解密功能并不复杂&#xff0c;微信团队提供了5种语言的示例代码(包括C、php、Python、Java和C#)&#xff0c;对于使用这个5种语言…

linux之lsof和netstat判断端口(port)被哪些应用占用

1 问题 判断端口&#xff08;port&#xff09;被哪些进程占用,我们要记得使用lsof&#xff08;list open file&#xff09;命令,或者用netstat命令。 2 命令 lsof -i:port netstat -apn | grep port 3 扩展 1) 列出所有tcp 网络连接信息 lsof -i tcp 2) 列出所有udp网络连…

多云战略:企业如何精益求精?

随着为企业用户提供更多的选择和更高的灵活性&#xff0c;多云模式正在开始受到他们的关注。但正如实施一个单一的云部署一样&#xff0c;企业需要为多云计算实施进行精心评估&#xff0c;从而选择正确的云服务供应商。在某些情况下&#xff0c;那些市场的非主流供应商可能会为…

python函数返回多个值时的数据类型是_Python3 注释多个返回值的函数类型

场景这要是讲函数注释的用法没有返回值def function(ver: str):print(var)单个返回值def function(ver: str) -> dict:a[ver,ver,ver]return a多个返回值您总是返回一个对象&#xff1b;使用return one, two只返回一个元组。所以是的&#xff0c;-> Tuple[bool, str] 完全…

最常用的动态sql语句梳理Mybatis(转)

公司项目中一直使用Mybatis作为持久层框架&#xff0c;自然&#xff0c;动态sql写得也比较多了&#xff0c;最常见的莫过于在查询语句中使用if标签来动态地改变过滤条件了。Mybatis的强大特性之一便是它的动态sql&#xff0c;免除了拼接sql带来的各种麻烦&#xff0c;在开发项目…

php 之 Final 关键字

本来想写匿名类的。。。不过是php7才支持&#xff0c;相比大家可能版本一般不会那么高&#xff0c;所以我就不写了。 引用手册中的话&#xff1a; PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final&#xff0c;则子类无法覆盖该方法。如果一个类被声明为 fina…

C#链式编程

前言昨天我写了一段这样的一段代码。var email Email.From("1075094220qq.com").To("1075094220qq.com").CC("1075094220qq.com").Subject("邮件标题").Body("<h1 align\"center\">黑哥</h1><p>黑哥…

C#动态链接库的创建及使用

动态链接库( Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL),是微软公司在微软Windows操作系统中,实现共享函数库概念的一种方式。这些库函数的扩展名是 ”.dll"、".ocx"(包含ActiveX控制的库)或者 ".drv"(旧式的系统驱动程序…