python--Excel模块xlwings

安装:pip install xlwings
基本操作:

xlwings的特色:
- xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改
- 可以和matplotlib以及pandas无缝连接
- 可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。
- 开源免费,一直在更新
- 【能读出公式计算的值】
新建工作簿:
import xlwings as xw
app = xw.App(visible=True,add_book=False) #创建应用
#visible=True 显示Excel工作簿;False 不显示工作簿
#add_book=False 不再新建一个工作簿;True 另外再新建一个工作簿
wb = app.books.add() #新建工作簿
sh1=xw.books.active #引用活动工作薄
wb.activate() #激活为当前工作簿
打开已有工作簿:
方式一:
import xlwings as xw
app = xw.App(visible=True,add_book=False)
wb = app.books.open('D:\sample.xlsx') #读入已有工作簿
方式二:
import xlwings as xw
wb = xw.Book('D:\sample.xlsx') #读入已有工作簿
#工作簿不显示
保存工作簿:
import xlwings as xw
wb = xw.Book('D:\sample.xlsx')
wb.save('D:\samplelm.xlsx') #保存工作簿
参数可以省略:工作簿的原路径或脚本所在的路径
退出和关闭:
import xlwings as xw
app = xw.App(visible=True,add_book=False)
wb = app.books.open('D:\sample.xlsx')
wb.close() #关闭工作簿(程序不能编辑了)----显示的文件不关闭
app.quit() #退出应用---显示的文件也关闭
工作表操作:
import xlwings as xw
app = xw.App(visible=True,add_book=False)
wb = app.books.open('D:\sample.xlsx')
sht = wb.sheets[0] #引用工作表
#参数:工作表序号
sht1 = wb.sheets['物理'] #引用工作表
#参数:工作表名称
sht=xw.sheets.active #引用活动sheet print(sht)
print(sht1)
wb.close()
app.quit()
sht.clear() # 清除sheet的内容和格式
a=sht.name #返回表格名称
sht.delete # 删除sheet----[没有删除啊 ???]
单元格操作:
import xlwings as xw
app = xw.App(visible=True,add_book=False)
wb = app.books.open('D:\sample.xlsx')
sht = wb.sheets[0] rng = sht.range('a1') #引用单元格---方式一
#<Range [sample.xlsx]Sheet!$A$1>
#参数:可以大写,可以小写
rng = sht['b1'] #引用单元格---方式二
rng = sht[0,0] #引用单元格---方式三--第一行的第一列即a1
rng=xw.Range('c1') #引用活动sheet上的单元格
#注意Range首字母大写 print(rng)
wb.close()
app.quit()
rng = sht.range('a1:a5') #引用区域---方式一
#<Range [sample.xlsx]Sheet!$A$1:$A$5>
rng = sht['a1:b5'] #引用区域---方式二
#<Range [sample.xlsx]Sheet!$A$1:$B$5>
#rng = sht[:5,0] #引用区域---方式三---????
rng = sht.range('a1')
rng.value=10 #单元格赋值
rng = sht.range('b1')
rng.value='abcd' #单元格赋值
sht.range('c1').value = [1,2,3,4] #按行插入
#从单元格c1开始,按行依次插入数据
sht.range('a1:d4').value = [10,20,30,40] #指定区域插入数据---按行
sht.range('a2').options(transpose=True).value = [5, 6, 7, 8] #按列插入
#从单元格a2开始,按列依次插入数据
#既然默认的是按行写入,我们就把它倒过来嘛(transpose),单词要打对,如果你打错单词,它不会报错,而会按默认的行来写入
sht.range('a6').expand('table').value = [['a','b','c'],['d','e','f'],['g','h','i']] #区域赋值
#从单元格a6开始赋值
#['a','b','c'] 是一行;['d','e','f']是一行
L=sht.range('a1:d4').value #读取A1:D4区域的值
原表格数据:

返回值:

返回值是列表,每一行是一个列表
返回的数值默认是浮点数
rng=sht['d2']
a=rng.value #返回指定单元格的值
rng = sht.range('a1')
rng.add_hyperlink(r'www.baidu.com','百度','提示:点击即链接到百度') # 指定单元格加入超链接
a=rng.hyperlink #获得range的超链接
#http://www.baidu.com/
rng = sht.range('b6')
rng.formula='=SUM(B1:B5)' #输入公式
a=rng.formula #获取公式
#=SUM(B1:B5)
a=rng.get_address(row_absolute=True, column_absolute=True,include_sheetname=False, external=False) # 获得单元格的绝对地址
# $B$6
其它操作:
a=wb.fullname #返回工作簿的绝对路径
#D:\sample.xlsx
a=wb.name #返回工作簿的名称
#sample.xlsx
sht.activate() # 激活sheet为活动工作表
sht = wb.sheets[0]
rng = sht.range('a1')
a=rng.address #取得当前range的地址--$A$1
rng = sht.range('a1:c1')
a=rng.address #取得当前range的地址--$A$1:$C$1
a=rng.get_address() #与rng.address相同
rng.clear_contents() # 清除range的内容
rng.clear() # 清除格式和内容
sht = wb.sheets[0]
rng = sht.range('a1')
rng.color=(255,0,0) # 设置range的背景颜色
rng = sht.range('b1')
rng.color=(0,0,255)
a = rng.color # 取得range的背景色,以元组形式返回RGB值
#(255, 0, 0)
rng.color=None # 清除range的背景色
sht = wb.sheets[0]
rng = sht.range('c2:g4')
a=rng.column #获得range的第一列列标
#从A列是1
a=rng.count #返回range中单元格的格数
a=rng.row # 返回range的第一行行标
rng = sht.range('b2:g4')
a=rng.last_cell #获得range中右下角最后一个单元格
#<Range [sample.xlsx]Sheet!$G$4>
rng = sht.range('b6:c1')
a=rng.width # 返回range的总宽度
rng = sht.range('b6')
a=rng.column_width # 获得列宽
sht = wb.sheets[0]
rng = sht.range('b2:g4')
a=rng.row_height # 行的高度,所有行一样高返回行高,不一样返回None
a=rng.height # 返回range的总高度
a=rng.shape # 返回range的行数和列数---(3, 6)
a=rng.sheet # 返回range所在的sheet
#<Sheet [sample.xlsx]Sheet>
a=rng.rows #返回range的所有行
for i in a:
print(i)
#<Range [sample.xlsx]Sheet!$B$2:$G$2>
#<Range [sample.xlsx]Sheet!$B$3:$G$3>
#<Range [sample.xlsx]Sheet!$B$4:$G$4>
a=rng.rows[0] # range的第一行
#<Range [sample.xlsx]Sheet!$B$2:$G$2>
a=rng.rows.count # range的总行数
a=rng.columns # 返回range的所有列
for i in a:
print(i)
#<Range [sample.xlsx]Sheet!$C$2:$C$4>
#<Range [sample.xlsx]Sheet!$D$2:$D$4>
#<Range [sample.xlsx]Sheet!$E$2:$E$4>
#<Range [sample.xlsx]Sheet!$F$2:$F$4>
#<Range [sample.xlsx]Sheet!$G$2:$G$4>
rng = sht.range('b2:g4')
a=rng.columns[0] # 返回range的第一列
#<Range [sample.xlsx]Sheet!$B$2:$B$4>
a=rng.columns.count # 返回range的列数
rng.autofit() # 所有range的大小自适应
rng.columns.autofit() # 所有列宽度自适应
rng.rows.autofit() # 所有行高自适应


python--Excel模块xlwings的更多相关文章
- python中常⽤的excel模块库
python中常用的excel模块库&安装方法 openpyxl openpyxl是⼀个Python库,用于读取/写⼊Excel 2010 xlsx / xlsm / xltx / xltm⽂ ...
- python 写 excel 模块 : xlwt
主要来自:[ python中使用xlrd.xlwt操作excel表格详解 ] 为了方便阅读, 我将原文两个模块拆分为两篇博文: [ python 读 excel 模块: xlrd ] [ python ...
- python 读 excel 模块: xlrd
主要来自:[ python中使用xlrd.xlwt操作excel表格详解 ] 为了方便阅读, 我将原文两个模块拆分为两篇博文: [ python 读 excel 模块: xlrd ] [ python ...
- python自动化--模块操作之re、MySQL、Excel
一.python自有模块正则 import re # re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None print(re.match("www ...
- python xlrd 模块(获取Excel表中数据)
python xlrd 模块(获取Excel表中数据) 一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了pyt ...
- Python(五)模块
本章内容: 模块介绍 time & datetime random os sys json & picle hashlib XML requests ConfigParser logg ...
- Python CSV模块简介
Table of Contents 1. CSV 1.1. 简介 1.2. 字典方式地读写 1.3. 其它 2. 参考资料 CSV csv文件格式是一种通用的电子表格和数据库导入导出格式.最近我调用R ...
- Python win32com模块 合并文件夹内多个docx文件为一个docx
Python win32com模块 合并文件夹内多个docx文件为一个docx #!/usr/bin/env python # -*- coding: utf-8 -*- from win32com. ...
- Python标准模块--threading
1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...
- Python的模块引用和查找路径
模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中 ...
随机推荐
- Jenkins中shell-script执行报错sh: line 2: npm: command not found
<1>本地执行npm run build--正常 <2>查看环境变量--正常 [root@localhost bin]# echo $PATH /usr/local/node/ ...
- [Python3] 040 文件 一般使用
目录 文件 1. open 函数 2. with 语句 3. 先写再读 3.1 写 3.2 读 4. "位置"的查询与移动 4.1 tell() 4.2 seek(cookie, ...
- [转帖]ASML发布Q1季度财报 营收22.3亿欧元,EUV光刻机下半年产能大增 ...
ASML发布Q1季度财报营收22.3亿欧元,EUV光刻机下半年产能大增 ... 孟宪瑞发布于2019-4-18 10:32 https://www.expreview.com/67969.html 一 ...
- Eclipse myeclipse下配置HanLP的教程
一.说明 博主的配置 1:window10 2:myeclipse 3:jdk1.8 备注:文章分享自贾继康的博客,博客使用的hanlp是1.6.8的版本.大家可以去下载最新的1.7版本了,也比较推荐 ...
- HDU3336 Count the string(kmp
It is well known that AekdyCoin is good at string problems as well as number theory problems. When g ...
- 更换composer镜像源为阿里云
说一说我为什么会更换镜像源,今天我准备给公司的项目添加一个 Excel 导出的功能,需要 PhpSpreadsheet 插件来实现我的功能.输入命令发现提示我 Authentication req ...
- split、paste命令
一.split分割文件 语法 split [OPTION] ... [INPUT [PREFIX]] 描述 将固定大小的INPUT输出到PREFIXaa,PREFIXab,.. ...
- 模块之re模块 正则表达式
正则表达式,正则表达式在处理字符串上有先天的优势,尤其大数量的字符串.先来记一个网站,此网站功能就是关于正则表达式方面的应用http://tool.chinaz.com/regex/ 单纯的正则表达式 ...
- C语言函数调用时候内存中栈的动态变化详细分析(彩图)
版权声明:本文为博主原创文章,未经博主允许不得转载.欢迎联系我qq2488890051 https://blog.csdn.net/kangkanglhb88008/article/details/8 ...
- php运行结果设置无缓存
修改配置php.ini vim /usr/local/php/lib/php.ini opcache.enable= 重启php服务 service php-fpm restart done! 参考地 ...