# # 引入库
import xlwings as xw
import time # 打开Excel程序,默认设置:程序可见,只打开不新建工作薄
# app = xw.App(visible=True,add_book=False)
#新建工作簿 (如果不接下一条代码的话,Excel只会一闪而过,卖个萌就走了)
# wb = app.books.add() # 打开已有工作簿(支持绝对路径和相对路径)
# wb = app.books.open('example.xlsx')
练习的时候建议直接用下面这条,这样的话就不会频繁打开新的Excel
wb = xw.Book('example.xlsx') print('-----新建sheet-----')
wb.sheets.add('jenny') # 引用Excel工作表,单元格
print('-----引用-----')
# 引用工作表
sht = wb.sheets[0]
#sht = wb.sheets[第一个sheet名] # 引用单元格
rng = sht.range('a1')
# #rng = sht['a1']
# #rng = sht[0,0] 第一行的第一列即a1,相当于pandas的切片
print ("引用单元格: "+str(rng.value))
#
# # 引用区域
rng = sht.range('a1:a5')
#rng = sht['a1:a5']
#rng = sht[:5,0]
print ("引用区域: "+str(rng.value)) # 重头戏:写入数据
# (xlwings多个单元格的写入大多是以表格形式)
print('-----写入-----')
# 选择起始单元格A1,写入字符串‘Hello’
print('-----写入单元格-----')
sht.range('a1').value = 'Hello'
time.sleep(3)
# 默认按行插入:A1:D1分别写入1,2,3,4
print('-----按行写入-----')
sht.range('a1').value = [1,2,3,4]
time.sleep(3) # 等同于
# sht.range('a1:d1').value = [1,2,3,4] # 按列插入: A2:A5分别写入5,6,7,8
# 你可能会想
sht.range('a2:a5').value = [5,6,7,8] # 但是你会发现xlwings还是会按行处理的,上面一行等同于
# sht.range('a2').value = [5,6,7,8] # 正确语法:
print('-----按列写入-----')
sht.range('a2').options(transpose=True).value = [5,6,7,8]
# 既然默认的是按行写入,我们就把它倒过来嘛(transpose),单词要打对,如果你打错单词,它不会报错,而会按默认的行来写入(别问我怎么知道的) # 我们输入信息的时候往往不只是写入一行或一列,
# 多行输入就要用二维列表了:
sht.range('a6').expand('table').value = [['a','b','c'],['d','e','f'],['g','h','i']] #B2到E5单元格全部赋同样的值
sht.range("B2","E5").value="bb" # 说完了写入就该讲读取了,记住了写入,读取就简单了
# 读取A1:D4(直接填入单元格范围就行了)
print('-----读取单元格内容-----')
print("读取A1:D4: "+str(sht.range('a1:d4').value)) # 返回的值是列表形式,多行多列为二维列表,但有一点要注意,返回的数值默认是浮点数
a = sht.range('a1:d1').value
print("读取A1:D1: "+str(a))
for i in a:
print("读取单元格: "+str(i))
print("单元格数据类型: "+str(type(i))) # 读取excel的第一列怎么做?
a = sht.range('a:a').value
print (a)
print(len(a))
# 你将会得到一个1048576个元素的列表,也就是空值也包含进去了,所以这种方法不行 # 思路:先计算单元格的行数(前提是连续的单元格)
rng = sht.range('a1').expand('table')
nrows = rng.rows.count # 接着就可以按准确范围读取了
a = sht.range(f'a1:a{nrows}').value
print("读取excel的第一列: "+str(a)) # 同理选取一行的数据也一样
ncols = rng.columns.count
#用切片
fst_col = sht[0,:ncols].value
print("读取excel的第一行: "+str(fst_col)) # 获取单元格字体,大小,颜色等属性
print('-----读取格式-----')
font_name = sht.range('A1').api.Font.Name # 获取字体名称
font_size = sht.range('A1').api.Font.Size # 获取字体大小
bold = sht.range('A1').api.Font.Bold # 获取是否加粗,True--加粗,False--未加粗
color = sht.range('A1').api.Font.Color # 获取字体颜色
print("A1单元格字体:"+font_name)
print("A1单元格大小:"+str(font_size))
print("A1单元格是否加粗:"+str(bold))
print("A1单元格颜色:"+str(color)) # 设置单元格字体,大小,颜色等属性
print('-----设置格式-----')
sht.range('A1').api.Font.Name = 'Times New Roman' # 设置字体为Times New Roman
sht.range('A1').api.Font.Size = 15 # 设置字号为15
sht.range('A1').api.Font.Bold = True # 加粗
sht.range('A1').api.Font.Color = 0x0000ff # 设置为红色RGB(255,0,0)
font_name = sht.range('A1').api.Font.Name # 获取字体名称
font_size = sht.range('A1').api.Font.Size # 获取字体大小
bold = sht.range('A1').api.Font.Bold # 获取是否加粗,True--加粗,False--未加粗
color = sht.range('A1').api.Font.Color # 获取字体颜色
print("A1单元格字体:"+font_name)
print("A1单元格大小:"+str(font_size))
print("A1单元格是否加粗:"+str(bold))
print("A1单元格颜色:"+str(color)) # 设置背景色
print('-----设置背景色-----')
sht.range('A6:V10').color = (255,0,255)
time.sleep(3) sht["A1048576"].end('up').row #最大行,根据单元格位置
print(sht["XFD1"].end('left').column) #最大列,根据单元格位置 # 清理内容,清理数据及格式
print('-----清理内容,清理数据及格式-----')
sht.range('A6:V10').clear() # 删除行和列,插入行和列
print('-----按行写入-----')
sht.range('b2').value = ["papi","lucy","kunal","snoopy"]
print('-----按列写入-----')
sht.range('b3').options(transpose=True).value = ["year","month"]
print('-----删除行和列,插入行和列-----')
sht.api.rows(1).delete #删除首行
time.sleep(3)
sht.api.columns(1).delete# 删除首列
sht.api.columns(2).insert #插入列
sht.api.rows(2).insert #插入行
time.sleep(3) # 合并单元格
print('-----合并单元格-----')
sht.range('A1:A5').api.merge() # 保存工作簿
wb.save('example.xlsx') # 退出工作簿(可省略)
wb.close() # 退出Excel
app.quit()
#

  

【Python】处理Excel的库Xlwings的更多相关文章

  1. Python之excel第三方库xlrd和xlwt

    Python读取excel表格的库xlrd,首先安装xlrd: pip3 install xlrd 代码: #!usr/bin/env python3 #!-*-coding=utf-8 -*- '' ...

  2. python基础===Excel处理库openpyxl

    openpyxl是一个第三方库,可以处理xlsx格式的Excel文件. 安装: pip install openpyxl 对如下excel进行读取操作,如图: from openpyxl import ...

  3. 27.python中excel处理库openpyxl使用详解

    openpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装. 读取Excel文件 需要导入相关函数 ? 1 2 3 from openpyxl ...

  4. 转载: pyExcelerator(Python操作Excel内库)API 文档

    1.pyExcelerator 主要通过俩个Object操作Excel: Workbook 和Worksheet2.pyExcelerator 读取Excel文件 parase_xls(filenam ...

  5. python操作Excel的库openpyxl

    http://openpyxl.readthedocs.io/en/default/tutorial.html 这里先上该库的文档镇文. 1,遇到合并后的单元格信息读取的问题,通过使用cell中off ...

  6. python读写Excel方法(xlwt和xlrd)

    在我们做平常工作中都会遇到操作excel,那么今天写一篇,如何通过python操作excel,当然python操作excel的库有很多,比如pandas,xlwt/xlrd,openpyxl等,每个库 ...

  7. python操作excel——openpyxl

    一.概述 python操作excel各个库对比:https://www.cnblogs.com/paul-liang/p/9187503.html 官方文档:https://openpyxl.read ...

  8. python 对 excel 的操作

    参考:https://www.php.cn/python-tutorials-422881.html  或 https://blog.51cto.com/wangfeng7399/2339556(使用 ...

  9. python读Excel方法(xlrd)

    在我们做平常工作或自动化测试中都会遇到操作excel,Python处理exc相当顺手,如何通过python操作excel,当然python操作excel的库有很多,比如pandas,xlwt/xlrd ...

随机推荐

  1. 彻底抛弃 jQuery ,不然还留着过年?

    我以前很喜欢 jQuery,而且说实话,我是先学jQuery,再学 JavaScript 的.所以我写这篇文章有点像是在背叛 jQuery. 我知道,关于为什么不应该用 jQuery 的文章已经汗牛充 ...

  2. getOwnPropertyDescriptor

    语法 Object.getOwnPropertyDescriptor(obj, prop) 参数 obj 需要查找的目标对象 prop 目标对象内属性名称 返回值 如果指定的属性存在于对象上,则返回其 ...

  3. Windows RDP的RCE漏洞分析和复现(CVE-2019-0708)

    0x00 漏洞描述 Windows系列服务器于2019年5月15号,被爆出高危漏洞,该漏洞影响范围较广如:windows2003.windows2008.windows2008 R2.windows ...

  4. Solr搜索器的特性及相关操作

    一.搜索处理器简介 所有的请求处理器都实现一个Java类,本例实现了solr.SearchHandler.在运行时,solr.SearchHandler被解析为内置的Solr类org.apache.s ...

  5. Vue2.0 新手入门 — 从环境搭建到发布

    什么是 Vue Vue 是一个前端框架,特点是数据绑定 比如你改变一个输入框 Input 标签的值,会自动同步更新到页面上其他绑定该输入框的组件的值 组件化 页面上小到一个按钮都可以是一个单独的文件. ...

  6. 《linux就该这么学》课堂笔记08 用户权限、特殊权限、隐藏权限、su、sudo

    1.文件的读.写.执行权限可以简写为 r w x,亦可分别用数字4.2.1来表示 2.文件的特殊权限 2.1.SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限( ...

  7. 超强的Lambda Stream流操作

    原文:https://www.cnblogs.com/niumoo/p/11880172.html 在使用 Stream 流操作之前你应该先了解 Lambda 相关知识,如果还不了解,可以参考之前文章 ...

  8. axios跨域处理

    本质分析: 因为axios在vue中利用中间件http-proxy-middleware做了一个本地的代理服务A,相当于你的浏览器通过本地的代理服务A请求了服务端B,浏览器通过服务A并没有跨域,因此就 ...

  9. vue使用swiper模块滑动时报错:[Intervention] Ignored attempt to cancel a touchmove event with cancelable=false, for example becaus

    报错: vue报这个错 [Intervention] Ignored attempt to cancel a touchmove event with cancelable=false, for ex ...

  10. Angle Beats Gym - 102361A(计算几何)

    Angle Beats \[ Time Limit: 4000 ms \quad Memory Limit: 1048576 kB \] 题意 给出 \(n\) 个初始点以及 \(q\) 次询问,每次 ...