python使用 xlwt,xlrd,xlutils库操作Excel教程

这篇教程详细介绍了如何使用Python的xlwt, xlrd和xlutils库进行Excel文件的操作,包括新建、打开并增添新数据,以及如何选择Excel的保存位置。还提供了丰富的样式设置参考资料链接。" 133479380,19673501,CSS派生选择器详解与实战应用,"['CSS', '前端开发', '编程技巧']

(一)xlwt完整示例

# 0.导入xlst模块
import xlwt
 
# 1.创建 Workbook
wb = xlwt.Workbook()
 
# 2.创建 worksheet
ws = wb.add_sheet('test_sheet')
 
# 3.写入第一行内容  ws.write(a, b, c)  a:行,b:列,c:内容
ws.write(0, 0, '球队')
ws.write(0, 1, '号码')
ws.write(0, 2, '姓名')
ws.write(0, 3, '位置')

#4.写入一些数据
 data = [
	{
		'Team': '湖人',
		'Number': '34',
		'Name': '奥尼尔',
		'Positions': '中锋'
	},
	{
		'Team': '湖人',
		'Number': '24',
		'Name': '科比',
		'Positions': '后卫'
	},
	{
		'Team': '湖人',
		'Number': '23',
		'Name': '詹姆斯',
		'Positions': '前锋'
	}
]
 
for i, item in enumerate(data):
	ws.write(i+1, 0, item['Team'])
	ws.write(i+1, 1, item['Number'])
	ws.write(i+1, 2, item['Name'])
	ws.write(i+1, 3, item['Positions'])

#5.保存文件
wb.save('myExcel.xls')

(二) xlwt,xlrd,xlutils完整示例

新建excel、打开excel增添新数据

import xlwt
import xlrd
from xlutils.copy import copy

wb = xlwt.Workbook(encoding = 'utf-8')  # 创建一个excel  #ascii'可视为'utf-8'的一部分,so用'utf-8'更好
ws = wb.add_sheet('A Test Sheet')       # 新建一个表

ws.write(0, 0, 'Team')
ws.write(0, 1, 'Number')
ws.write(0, 2, 'Name')
ws.write(0, 3, 'Positions')

data = [  #一个列表
    {
        'Team': '湖人',
        'Number': '34',
        'Name': '奥尼尔',
        'Positions': '中锋'
    },
    {
        'Team': '湖人',
        'Number': '24',
        'Name': '科比',
        'Positions': '后卫'
    },
    {
        'Team': '湖人',
        'Number': '23',
        'Name': '詹姆斯',
        'Positions': '前锋'
    }
]
#print(type(data))
for i, item in enumerate(data):
    ws.write(i + 1, 0, item['Team'])
    ws.write(i + 1, 1, item['Number'])
    ws.write(i + 1, 2, item['Name'])
    ws.write(i + 1, 3, item['Positions'])
#print(type(item))
wb.save('example.xls')  # 保存xls

# ----- 打开excel添加数据 -------

filename = 'example.xls'# 文件名
wb = xlrd.open_workbook(filename, formatting_info=True)  # formatting_info=True: 保留原数据格式
newb = copy(wb) 			# 复制页面
ws = newb.get_sheet(0) 	# 取第一个sheet
ws.write(6, 6, "test")
newb.save(filename) 		# 保存文件

#支持03版到13版,保存的格式目前只支持03版本的xls格式,07以后的版本xlsx不支持

(三)自主选择excel的存储位置

import tkinter.filedialog
import numpy as np
import xlwt
import xlrd
from xlutils.copy import copy

wb = xlwt.Workbook(encoding = 'utf-8')  # 创建一个excel  #ascii'可视为'utf-8'的一部分,so用'utf-8'更好
# booksheet = workbook.add_sheet('Sheet 1', cell_overwrite_ok=True)   # 第二参数用于确认同一个cell单元是否可以覆盖填写
ws = wb.add_sheet('A Test Sheet')       # 新建一个表

ws.write(0, 0, 'Team')
ws.write(0, 1, 'Number')
ws.write(0, 2, 'Name')
ws.write(0, 3, 'Positions')

data = [  #一个列表
    {
        'Team': '湖人',
        'Number': '34',
        'Name': '奥尼尔',
        'Positions': '中锋'
    },
    {
        'Team': '湖人',
        'Number': '24',
        'Name': '科比',
        'Positions': '后卫'
    },
    {
        'Team': '湖人',
        'Number': '23',
        'Name': '詹姆斯',
        'Positions': '前锋'
    }
]
#print("data的类型:",type(data))
for i, item in enumerate(data):
    ws.write(i + 1, 0, item['Team'])
    ws.write(i + 1, 1, item['Number'])
    ws.write(i + 1, 2, item['Name'])
    ws.write(i + 1, 3, item['Positions'])
#print("item的类型:",type(item))

filename = tkinter.filedialog.asksaveasfilename(filetypes=[('xlsx', '*.xlsx')],initialdir='D:\\')
filename = filename + '.xls'
wb.save(filename)

源码链接——python 自己选择excel保存的位置

注:如果不加以下两行代码:

root = tkinter.Tk()    # 创建一个Tkinter.Tk()实例
root.withdraw()       # 将Tkinter.Tk()实例隐藏

程序运行后会出现一个小框:

在这里插入图片描述

(四)表格样式速查

Python xlwt,xlrd语法

xlrd和xlwt模块的小栗子 - https://www.cnblogs.com/xiao-apple36/p/9603499.html

python xlwt 设置单元格样式 ——https://www.jianshu.com/p/0f0cfffc949b

xlwt.Borders()Example ——https://www.programcreek.com/python/example/60028/xlwt.Borders

xlwt easyxf()能理解的颜色预览——https://blog.csdn.net/haowells/article/details/37928175

xlwt设置列宽、行高——https://blog.csdn.net/weixin_42122355/article/details/83536142

Widths & Heights with xlwt ——http://reliablybroken.com/b/2011/10/widths-heights-with-xlwt-python/

(五)+样式示例代码(注释版)

在这里插入图片描述

import xlwt
import xlrd
from datetime import datetime, date
from xlutils.copy import copy


def set_style(name, height, bold=False, format_str=''):
    style = xlwt.XFStyle()  # 初始化样式

    font = xlwt.Font()  # 创建字体
    font.name = name  # 'Times New Roman'
    font.bold = bold  # 黑体
    font.height = height


    borders = xlwt.Borders()  # 创建边框
    borders.left = 2
    borders.right = 2
    borders.top = 2
    borders.bottom = 2
#细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双线:6,细点虚线:7
#大粗虚线:8,细点划线:9,粗点划线:10,细双点划线:11,粗双点划线:12,斜点划线:13

    al = xlwt.Alignment() #单元格对齐方式
    # 垂直对齐
    al.horz = 0x02
    # 水平对齐
    al.vert = 0x01
    # 换行
    al.wrap = al.WRAP_AT_RIGHT
# horz水平对齐方式:HORZ_LEFT = 0x01 左端,_CENTER = 0x02,_RIGHT = 0x03 右端
# vert垂直对齐方式: VERT_TOP = 0x00 上端,_CENTER = 0x01,_BOTTOM = 0x02 底端对齐


#   style = xlwt.XFStyle()  # 初始化样式
    style.font = font       # Add font to style
    style.borders = borders # Add borders to style
    style.num_format_str = format_str #数据类型
    return style


wb = xlwt.Workbook(encoding = 'utf-8')  # 创建一个excel  #ascii'可视为'utf-8'的一部分,so用'utf-8'更好
ws = wb.add_sheet('A Test Sheet')       # 新建一个表

#ws.col(0).width = 256 * 10              # 设置第一列列宽 # 256为衡量单位/基准数,20表示20个字符宽度
#ws.col(1).width = 256 * 10

# 往单元格写入内容 (行,列,内容,style or 空)
#ws.write(10, 1, 1234.56, set_style('Times New Roman', 220,bold=False, format_str='#,##0.00'))
#ws.write(11, 1, datetime.now(), set_style('Times New Roman',220,bold=False, format_str='DD-MM-YYYY'))
#ws.write(12, 1, xlwt.Formula("A3+B3"),set_style('Times New Roman', 220,bold=False, format_str='#,##0.00'))

#_______________________________________________正文

ws.write(0, 0, 'Team')
ws.write(0, 1, 'Number')
ws.write(0, 2, 'Name')
ws.write(0, 3, 'Positions')

data = [  #一个列表
    {
        'Team': '湖人',
        'Number': '34',
        'Name': '奥尼尔',
        'Positions': '中锋'
    },
    {
        'Team': '湖人',
        'Number': '24',
        'Name': '科比',
        'Positions': '后卫'
    },
    {
        'Team': '湖人',
        'Number': '23',
        'Name': '詹姆斯',
        'Positions': '前锋'
    }
]
print(type(data))
for i, item in enumerate(data):
    ws.write(i + 1, 0, item['Team'])
    ws.write(i + 1, 1, item['Number'])
    ws.write(i + 1, 2, item['Name'])
    ws.write(i + 1, 3, item['Positions'])
print(type(item))
wb.save('example.xls')  # 保存xls

# ----- 打开excel添加数据 -------
filename = 'example.xls'# 文件名
wb = xlrd.open_workbook(filename, formatting_info=True)  # formatting_info=True: 保留原数据格式
newb = copy(wb) 			# 复制页面
ws = newb.get_sheet(0) 	# 取第一个sheet
ws.write(6, 6, "test")
newb.save(filename) 		# 保存文件

#支持03版到13版,保存的格式目前只支持03版本的xls格式,07以后的版本xlsx不支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值