zoukankan      html  css  js  c++  java
  • 表格处理模块

    xlrd模块

    是python中一个第三方的用于读取excle表格的模块

    exlce结构分析

    一个excle表格包含多个sheet

    一个sheet中包含多行多列

    每个单元格具备唯一的行号和列号

    xlrd函数(读)

    import xlrd
    
    # 读取文件
    work_book = xlrd.open_workbook("/Users/jerry/Desktop/公司机密数据.xlsx")
    # 选取一个表
    # 获取所有所有表格名称
    print(work_book.sheet_names())
    # 选择第2个  索引从0开始
    sheet = work_book.sheet_by_index(1)
    # 表格名称
    print(sheet.name)
    # 行数
    print(sheet.nrows)
    # 列数
    print(sheet.ncols)
    
    #批量读取行数据
    # 取出第6行的全部内容包含数据类型
    print(sheet.row(6))
    # 取出第6行的内容包含数据类型 从第3列开始获取
    print(sheet.row_slice(6,start_colx=3))
    
    # 取出第6行的内容包含数据类型 从第3列开始获取
    print(sheet.row_slice(6,start_colx=4,end_colx=5))
    
    # 获取该行所有数据类型 一数字表示
    # print(sheet.row_types(6))
    # print(sheet.row_values(6))
    # 单元格的处理
    print(sheet.cell(0,0).value) # 取值
    print(sheet.cell(0,0).ctype) # 取类型
    print(sheet.cell_value(2,0)) # 直接取值
    print(sheet.row(0)[0]) # 先取行再取单元格
    print(sheet.col(0)) # 第0列所有数据
    print(sheet.col(0)) # 先取列再取单元格
    print(sheet.cell_type(0,0))
    # 单元格位置转换
    print(xlrd.cellname(2,1))
    print(xlrd.cellnameabs(0,2))
    print(xlrd.colname(5))
    # 时间类型转换
    # print(sheet.cell(6,5).value)
    # print(xlrd.xldate_as_datetime(sheet.cell(6,5).value,1))

    xlwt模块(写)

    是python中一个第三方的用于写入excle数据到表格的模块

    import xlwt
    # 创建工作簿
    work = xlwt.Workbook()
    # 创建一个表
    sheet = work.add_sheet("员工信息数据")
    
    
    #创建一个字体对象
    font = xlwt.Font()
    font.name = "Times New Roman" # 字体名称
    font.bold = True # 加粗
    font.italic = True # 斜体
    font.underline = True # 下划线
    
    #创建一个样式对象
    style = xlwt.XFStyle()
    style.font = font
    
    # print(sheet.write.__doc__)
    
    # 写入标题
    for k in keys:
        sheet.write(0,keys.index(k),k,style)
    
    # 写入数据
    for i in infos:
        for k in keys:
            sheet.write(1 + infos.index(i),keys.index(k),label = i[k])
    # 保存至文件
    work.save("test.xls")
    import xlrd
    import traceback
    import xlwt
    import os
    #------------------读数据---------------------------------
    
    def file_exist(SRC_PATH,TARGET_PATH):
        try:
            if os.path.exists(SRC_PATH):
                if not os.path.exists(TARGET_PATH):
                    print("创建目标文件")
                    f = open(TARGET_PATH, 'w')
                    f.close()
                return True
            else:
                print("源文件不存在")
                return False
    
        except Exception as ep:
            print(ep)
            traceback.format_exc()
            return False
    def run(SRC_PATH,SRC_SHEET,TARGET_PATH,TARGET_SHEET):
        try:
            res=file_exist(SRC_PATH,TARGET_PATH)
            if not res:
                return False
            bk=xlrd.open_workbook(SRC_PATH)
            # shxrange=range(bk.nsheets)
            try:
              sh=bk.sheet_by_name(SRC_SHEET)
            except:
                traceback.format_exc()
                print ("代码出错")
            nrows=sh.nrows #获取行数
            print(nrows)
            book = xlwt.Workbook(encoding='gbk')
            sheet = book.add_sheet(TARGET_SHEET) #创建一个sheet
            for i in range(nrows):
              row_data=sh.row_values(i)
              #---------写出文件到excel--------
              print ("-----正在写入 "+str(i+1)+"")
              sheet.write(i,0, label = sh.cell_value(i,3)) #向第1行第1列写入获取到的值
              sheet.write(i,1, label = sh.cell_value(i,1)) #向第1行第2列写入获取到的值
              sheet.write(i,2, label = sh.cell_value(i,2)) #向第1行第2列写入获取到的值
            book.save(TARGET_PATH)
            return True
        except Exception as ep:
            print(ep)
            traceback.format_exc()
            return False
    if __name__ == '__main__':
        #源文件
        SRC_PATH = r'D:WORKwangzhigangA.xlsx'
        #源文件中表的名字
        SRC_SHEET="Sheet1"
        # 目标文件
        TARGET_PATH = r'D:WORKwangzhigange.xls'
        # 目标文件中表的名字
        TARGET_SHEET="Sheet1"
        if not run(SRC_PATH,SRC_SHEET,TARGET_PATH,TARGET_SHEET):
            print("表格数据处理失败")

    注意写入的时候 文件格式要是 .xls

    如果想要将xls转为xlsx

    # pip install Pywin32
    
    import win32com.client as win32
    fname =  r'D:WORKwangzhigange.xls'
    excel = win32.gencache.EnsureDispatch('Excel.Application')
    wb = excel.Workbooks.Open(fname)
    wb.SaveAs(fname+"x", FileFormat = 51)    #FileFormat = 51 is for .xlsx extension
    wb.Close()                               #FileFormat = 56 is for .xls extension
    excel.Application.Quit()

    xlutils

    插入数据

    from xlutils import copy
    import xlrd
    excel_path=r'D:WORKwangzhigangC.xls'#文件路径
    #excel_path=unicode('D:\测试.xls','utf-8')#识别中文路径
    rbook = xlrd.open_workbook(excel_path)#打开文件
    wbook = copy.copy(rbook)#复制文件并保留格式
    w_sheet = wbook.get_sheet(0)#索引sheet表
    row=1
    col=1
    value='测试'
    w_sheet.write(row,col,value)
    wbook.save(excel_path)#保存文件
  • 相关阅读:
    MOSS中的User的Title, LoginName, DisplayName, SID之间的关系
    如何在Network Monitor中高亮间隔时间过长的帧?
    SharePoint服务器如果需要安装杀毒软件, 需要注意什么?
    如何查看SQL Profiler? 如何查看SQL死锁?
    什么是Telnet
    The name or security ID (SID) of the domain specified is inconsistent with the trust information for that domain.
    Windows SharePoint Service 3.0的某个Web Application无搜索结果
    网络连接不上, 有TCP错误, 如果操作系统是Windows Server 2003, 请尝试一下这里
    在WinDBG中查看内存的命令
    The virtual machine could not be started because the hypervisor is not running
  • 原文地址:https://www.cnblogs.com/Hale-wang/p/13230001.html
Copyright © 2011-2022 走看看