zoukankan      html  css  js  c++  java
  • 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 查询文件存放地址
    类数组对象:arguments
    前端开发工程师从入门到精通学习过程及资源总结(持续更新中)
    CSS3的圆角border-radius属性
    内联元素inline-block空隙问题
    js中typeof用法详细介绍
    正则表达式
    sublime text 3 快捷键大全以及配置编译环境
    c# 泛型类
    c# 中config.exe 引发的一些问题
  • 原文地址:https://www.cnblogs.com/liming19680104/p/11648048.html
Copyright © 2011-2022 走看看