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)#保存文件
  • 相关阅读:
    [Project Euler] Problem 58
    [Project Euler] Problem 59 Decrption
    [Project Euler] Problem 57
    VS2010 + WinDDK 搭建驱动开发环境
    利用C++模板特性计算各整数类型的最大最小值
    虚表的那些事儿
    ModuleNotFoundError: No module named 'pip._vendor.six'
    OpenCVPython系列之单应性查找对象理论篇
    OpenCVPython系列之背景分离
    OpenCVPython系列之Shi—tomasi拐角检测器
  • 原文地址:https://www.cnblogs.com/Hale-wang/p/13230001.html
Copyright © 2011-2022 走看看