zoukankan      html  css  js  c++  java
  • python大战EXCEL--xlwings

    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:	est.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:	est.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']]
     表格
     





  • 相关阅读:
    C#之枚举
    C#之判断字母大小、字母转ACII码
    C#之BF算法
    md5如何实现encodePassword加密方法
    基本配置及安全级别security-level
    js中“原生”map
    web.xml讲解
    java application指的是什么
    .conf、.bak是什么格式
    Maven系列--web.xml 配置详解
  • 原文地址:https://www.cnblogs.com/wqbin/p/11880932.html
Copyright © 2011-2022 走看看