xlwings的特色

  • xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改
  • 可以和matplotlib以及pandas无缝连接
  • 可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。

常用函数和方法

    1. Book 工作簿常用的api
      wb=xw.books[‘工作簿名称']

      • wb.activate()激活为当前工作簿
      • wb.fullname 返回工作簿的绝对路径
      • wb.name 返回工作簿的名称
      • wb.save(path=None) 保存工作簿,默认路径为工作簿原路径,若未保存则为脚本所在的路径
        -wb. close() 关闭工作簿
        代码例子:
        # 引用Excel程序中,当前的工作簿
        wb=xw.books.acitve
        # 返回工作簿的绝对路径
        x=wb.fullname
        # 返回工作簿的名称
        x=wb.name
        # 保存工作簿,默认路径为工作簿原路径,若未保存则为脚本所在的路径
        x=wb.save(path=None)
        # 关闭工作簿
        x=wb.close()
    2. sheet 常用的api
      # 引用某指定sheet
      sht=xw.books['工作簿名称'].sheets['sheet的名称']
      # 激活sheet为活动工作表
      sht.activate()
      # 清除sheet的内容和格式
      sht.clear()
      # 清除sheet的内容
      sht.contents()
      # 获取sheet的名称
      sht.name
      # 删除sheet
      sht.delete
    3. range常用的api
      # 引用当前活动工作表的单元格
      rng=xw.Range('A1')
      # 加入超链接
      # rng.add_hyperlink(r'www.baidu.com','百度',‘提示:点击即链接到百度')
      # 取得当前range的地址
      rng.address
      rng.get_address()
      # 清除range的内容
      rng.clear_contents()
      # 清除格式和内容
      rng.clear()
      # 取得range的背景色,以元组形式返回RGB值
      rng.color
      # 设置range的颜色
      rng.color=(255,255,255)
      # 清除range的背景色
      rng.color=None
      # 获得range的第一列列标
      rng.column
      # 返回range中单元格的数据
      rng.count
      # 返回current_region
      rng.current_region
      # 返回ctrl + 方向
      rng.end('down')
      # 获取公式或者输入公式
      rng.formula='=SUM(B1:B5)'
      # 数组公式
      rng.formula_array
      # 获得单元格的绝对地址
      rng.get_address(row_absolute=True, column_absolute=True,include_sheetname=False, external=False)
      # 获得列宽
      rng.column_width
      # 返回range的总宽度
      rng.width
      # 获得range的超链接
      rng.hyperlink
      # 获得range中右下角最后一个单元格
      rng.last_cell
      # range平移
      rng.offset(row_offset=0,column_offset=0)
      #range进行resize改变range的大小
      rng.resize(row_size=None,column_size=None)
      # range的第一行行标
      rng.row
      # 行的高度,所有行一样高返回行高,不一样返回None
      rng.row_height
      # 返回range的总高度
      rng.height
      # 返回range的行数和列数
      rng.shape
      # 返回range所在的sheet
      rng.sheet
      #返回range的所有行
      rng.rows
      # range的第一行
      rng.rows[0]
      # range的总行数
      rng.rows.count
      # 返回range的所有列
      rng.columns
      # 返回range的第一列
      rng.columns[0]
      # 返回range的列数
      rng.columns.count
      # 所有range的大小自适应
      rng.autofit()
      # 所有列宽度自适应
      rng.columns.autofit()
      # 所有行宽度自适应
      rng.rows.autofit()
    4. books 工作簿集合的api
      # 新建工作簿
      xw.books.add()
      # 引用当前活动工作簿
      xw.books.active
    5. sheets 工作表的集合
      # 新建工作表
      xw.sheets.add(name=None,before=None,after=None)
      # 引用当前活动sheet
      xw.sheets.active

1.打开已保存的Excel文档
# 导入xlwings模块,打开Excel程序,默认设置:程序可见,只打开不新建工作薄,屏幕更新关闭

import xlwings as xw
app=xw.App(visible=True,add_book=False)
app.display_alerts=False
app.screen_updating=False
wb=app.books.open(filepath)
wb.save()
wb.close()
app.quit()

2. 新建Excel文档,命名为test.xlsx,并保存

import xlwings as xw
app=xw.App(visible=True,add_book=False)
wb=app.books.add()
wb.save(r'd:\test.xlsx')
wb.close()
app.quit()
3.新建test.xlsx,在sheet1的第一个单元格输入 “人生” ,然后保存关闭,退出Excel程序。

import xlwings as xw
app=xw.App(visible=True,add_book=False)
wb=app.books.add()
# wb就是新建的工作簿(workbook),下面则对wb的sheet1的A1单元格赋值
wb.sheets['sheet1'].range('A1').value='人生'
wb.save(r'd:\test.xlsx')
wb.close()
app.quit()

引用工作簿、工作表和单元格

1.引用工作簿,注意工作簿应该首先被打开

wb.=xw.books['工作簿的名字‘]

2.引用活动工作簿

wb=xw.books.active

3.引用工作簿中的sheet

sht=xw.books['工作簿的名字‘].sheets['sheet的名字']
# 或者
wb=xw.books['工作簿的名字']
sht=wb.sheets[sheet的名字]

4.引用活动sheet

sht=xw.sheets.active

5.引用A1单元格

rng=xw.books['工作簿的名字‘].sheets['sheet的名字']
# 或者
sht=xw.books['工作簿的名字‘].sheets['sheet的名字']
rng=sht.range('A1')

6.引用活动sheet上的单元格

其中需要注意的是单元格的完全引用路径是:
# 第一个Excel程序的第一个工作薄的第一张sheet的第一个单元格
xw.apps[0].books[0].sheets[0].range('A1')
迅速引用单元格的方式是
sht=xw.books['名字'].sheets['名字']
# A1单元格
rng=sht[’A1']
# A1:B5单元格
rng=sht['A1:B5']
# 在第i+1行,第j+1列的单元格
# B1单元格
rng=sht[0,1]
# A1:J10
rng=sht[:10,:10]

PS:

对于单元格也可以用表示行列的tuple进行引用
# A1单元格的引用
xw.Range(1,1)
#A1:C3单元格的引用
xw.Range((1,1),(3,3))

数据结构

1.一维数据

python的列表,可以和Excel中的行列进行数据交换,python中的一维列表,在Excel中默认为一行数据

import xlwings as xw
sht=xw.sheets.active
# 将1,2,3分别写入了A1,B1,C1单元格中
sht.range('A1').value=[1,2,3]
# 将A1,B1,C1单元格的值存入list1列表中
list1=sht.range('A1:C1').value
# 将1,2,3分别写入了A1,A2,A3单元格中
sht.range('A1').options(transpose=True).value=[1,2,3]
# 将A1,A2,A3单元格中值存入list1列表中
list1=sht.range('A1:A3').value

2.二维数据
python的二维列表,可以转换为Excel中的行列。二维列表,即列表中的元素还是列表。在Excel中,二维列表中的列表元素,代表Excel表格中的一列。例如:

# 将a1,a2,a3输入第一列,b1,b2,b3输入第二列
list1=[[‘a1’,'a2','a3'],['b1','b2','b3']]
sht.range('A1').value=list1
 
提取运行结果
# 将A1:B3的值赋给二维列表list1
list1=sht.range('A1:B3‘).value

3.Excel中区域的选取表格

第一列

# 选取第一列
rng=sht. range('A1').expand('down')
rng.value=['a1','a2','a3'] 
 
第一行
# 选取第一行
rng=sht.range('A1').expand('right')
rng=['a1','b1']
 
 
# 选取表格
rng.sht.range('A1').expand('table')
rng.value=[[‘a1’,'a2','a3'],['b1','b2','b3']]
 表格
 

python大战EXCEL--xlwings的更多相关文章

  1. Python处理Excel文件

    因为工作需求,需要审核一部分query内容是否有效,query储存在Excel中,文本内容为页面的Title,而页面的URL以HyperLink的格式关联到每个Cell. 于是本能的想到用Python ...

  2. 震惊!当Python遇到Excel后,将开启你的认知虫洞

    本文主要内容:   1. Excel,你为什么如此强大 2. 软件开发也需要团队作战 3. Excel的集成方案演化 4. macOS特有的集成方案:applescript 5. Python与Exc ...

  3. Python导出Excel为Lua/Json/Xml实例教程(三):终极需求

    相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 Python导出E ...

  4. Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验

    Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...

  5. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  6. python读取excel一例-------从工资表逐行提取信息

    在工作中经常要用到python操作excel,比如笔者公司中一个人事MM在发工资单的时候,需要从几百行的excel表中逐条的粘出信息,然后逐个的发送到员工的邮箱中.人事MM对此事不胜其烦,终于在某天请 ...

  7. 使用Python将Excel中的数据导入到MySQL

    使用Python将Excel中的数据导入到MySQL 工具 Python 2.7 xlrd MySQLdb 安装 Python 对于不同的系统安装方式不同,Windows平台有exe安装包,Ubunt ...

  8. 使用Python对Excel表格进行简单的读写操作(xlrd/xlwt)

    算是一个小技巧吧,只是进行一些简单的读写操作.让人不爽的是xlrd和xlwt是相对独立的,两个模块的对象不能通用,读写无法连贯操作,只能单独读.单独写,尚不知道如何解决. #①xlrd(读) #cod ...

  9. python操作excel表格(xlrd/xlwt)

    最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究&q ...

  10. Python操作Excel

    一.系统性学习 对于操作Excel,需要Xlrd/xlwt这两个模块,下面推荐出系统性学习的网址: python操作Excel读写--使用xlrd 官方文档 Python 使用 Xlrd/xlwt 操 ...

随机推荐

  1. 深入理解 Css3 的 clip-path

    clip-path CSS 属性可以创建一个只有元素的部分区域可以显示的剪切区域.区域内的部分显示,区域外的隐藏.clip-path属性代替了现在已经弃用的剪切 clip属性.clip-path的属性 ...

  2. ora00972标识符过长

    oracle10G对于表名的长度限制是30个字节 表名超过30结果不能创建,提示ora00972-标识符过长. 需要将表名控制在30个字节以内

  3. “Using 声明”在 C# 7.3 中不可用。请使用 8.0 或更高的语言版本。

    Core3.0升级至3.1时候报错:“Using 声明”在 C# 7.3 中不可用.请使用 8.0 或更高的语言版本. 参照微软文档:https://docs.microsoft.com/zh-cn/ ...

  4. javascript 写一个ajax 自动拦截,并下载数据

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  5. CTS & APIO 2019 游记

    写在前面 算是省选后的第一轮大考. 去年因为某些原因并没有参加 CTSC 以及 APIO,还是有些遗憾,所以希望今年能有所收获. 也希望今年的 CTS 能延续去年的出题风格,这样我还能苟一两个题. 然 ...

  6. hdu 6197 array array array LIS

    正反跑一次LIS,取最大的长度,如果长度大于n-k就满足条件. ac代码: #include <cstdio> #include <cstring> #include < ...

  7. (二)CXF之用CXF官方工具生成客户端Client

    一.CXF工具的下载与使用 登录CXF官网:http://cxf.apache.org/download.html 下载,本系列使用的是3.1.5版本: 添加path环境变量 二.案例 2.1 发布w ...

  8. R语言做逻辑回归

    前面写过一个多分类的逻辑回归,现在要做一个简单的二分类,用glm函数 导入csv格式如下: mydata<-read.csv("D://li.csv",header=T) c ...

  9. ubantu18.04 配置nginx与uwsgi(前后端分离)

    ubantu18.04 配置nginx与uwsgi   一.首先先安装nginx静态服务 先更新 sudo apt-get update 1.安装gcc g++的依赖库 sudo apt-get in ...

  10. Docker启动Elasticsearch报错vm.max_map_count

    报错信息如下 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 临 ...