表格处理模块

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:\WORK\wangzhigang\A.xlsx'
    #源文件中表的名字
    SRC_SHEET="Sheet1"
    # 目标文件
    TARGET_PATH = r'D:\WORK\wangzhigang\e.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:\WORK\wangzhigang\e.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:\WORK\wangzhigang\C.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)#保存文件

 

posted on 2020-07-03 13:48  小胖子方法  阅读(220)  评论(0编辑  收藏  举报

导航