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#中 ...
随机推荐
- MariaDB(第三章)select
基本查询 ``` --查询基本使用(条件,排序,聚合函数,分组,分页) --创建学生表 create table students ( id int unsigned not null auto_in ...
- 解决incorrect 'only available in ES6' warning (W119) with options `moz: true, esversion: 6` 报错问题
很多同学在新建vue项目时,会遇到 incorrect 'only available in ES6' warning (W119) with options `moz: true, esversio ...
- flask_script
Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任 ...
- jenkins pipline 和 jenkinsfile
Jenkins Pipeline(或简称为 "Pipeline")是一套插件,将持续交付的实现和实施集成到 Jenkins 中.Jenkins Pipeline 提供了一套可扩展的 ...
- myeclipse使用db-brower连接到sqlserver2012踩坑经历
myeclipse使用db-brower连接到sqlserver踩坑经历 首先得建立个角色 右键->创建登录名 权限开大点 连接设置 Driver template选择我选这个,格式按照我的写 ...
- Known Notation括号匹配类问题(2014年ACM/ICPC 亚洲区域赛牡丹江)
题意: 给你数字或 * 的串,你可以交换一个*和数字.在最前面添1.在一个地方插入*,问你使串满足入栈出栈的(RNP)运算法则. 思路: 引用:https://blog.csdn.net/u01158 ...
- PHP 补零操作
str_pad(string,length,pad_string,pad_type)//参数 描述string //必需.规定要填充的字符串.length //必需.规定新的字符串长度.如果该值小于字 ...
- 01:keepalive高可用集群
1.1 keepalived高可用软件介绍 1.keepalived--监控检查 注:keepalive软件有两种功能:监控检查.VRRP冗余协议 1. keepalive的作用是检测web服务器的状 ...
- Java设计模式七种写法
懒汉模式-线程不安全 public class Singleton { private static Singleton instance; private Singleton (){ } publi ...
- SpringBoot + Vue + nginx项目部署(零基础带你部署)
一.环境.工具 jdk1.8 maven spring-boot idea VSVode vue 百度网盘(vue+springboot+nginx源码): 链接:https://pan.baidu. ...