python 控制 excel

Python控制exce

关于包的说明:

  • xlrd 读取excel文件, xlrd >= 2.0时,仅支持xls格式; 指定 xlrd 版本 1.2.0 可支持xlsx
  • xlwt 写入excel文件,仅支持xls格式推荐使用
    • 适合与xlrd配合读取和修改excel文件,也可以直接创建新excel文件。
    • xlwt不能直接写⼊已有⽂件,需要copy⼀份新⽂件进⾏操作后保存为同名⽂件覆盖
    • from xlutils.copy import copy
  • xlswriter 创建新excel文件,支持xlsx格式,不支持excel文件修改。适合从头创建新excel文件
xlrd
  • 基本使用
import os
import xlrd 

file=xlrd.open_workbook('testCase.xls')

# 获取所有sheet的名字及数量
file_name=file.sheet_names()
sheet_count=file.nsheets

# 获取指定内容
row=sheet.row_values(1)
col=sheet.col_values(1)

#获取的行、列数据均会存放在list中
cell=sheet.cell_value(1,1)
unique_row=sheet.row_values(rowx=0,start_colx=1,end_colx=3)

# 获取单元格数据类型
# python读取excel中单元格的内容返回的有5种类型,其中对应关系是:0代表empty,1代表string,2代表number, 3代表date,4代表boolean,5代表error。
cell_type=sheet.cell_value(1,1).ctype

# 将excel中的用例放入指定list中
cls=[]
for i in range(rows):
    cls.append(sheet.row_values(rowx=i,start_colx=0,end_colx=None))
xlwt
  • 基本使用 创建新的excel文件

    import xlwt
    
    wbk = xlwt.Workbook(')
    sheet = wbk.add_sheet('sheet1')
    sheet.write(0,1,'test text')
    wbk.save('test.xls') 
    
  • xlutils结合xlrd可以达到修改excel文件目的

    import xlrd
    from xlutils.copy import copy
    wb = xlrd.open_workbook('demo.xls')
    wbnew = copy(wb)
    ws = wbnew.get_sheet(0)
    # 写入数据
    values = [['小明', '18', '男'],
              ['小李', '27', '男'],
              ['小王', '90', '女']]
    headers = ['姓名', '年龄', '性别']
    values.insert(0, headers)
    nrows = 0
    for rowdata in values:
        ncols = 0
        for celldata in rowdata:
            ws.write(nrows, ncols, celldata)
            ncols += 1
        nrows += 1
    # 结束
    wb.close()
    wbnew.save('demo.xls') 
    
  • 设置样式

    # 创建样式对象 在写入内容时作为参数传入
    title_style = xlwt.XFStyle()  # 标题样式
    text_style = xlwt.XFStyle()  # 正文样式
    
    # 创建字体对象
    type_list_font = xlwt.Font()
    type_list_font.name = '宋体'
    type_list_font.height = 230         # 字体大小
    type_list_font.colour_index = 0     # 字体颜色
    type_list_font.bold = True          # 字体加粗
    # 将字体对象赋予样式对象
    title_style.font = type_list_font
    text_style.font = type_list_font
    
    # 背景颜色设置
    pattern = xlwt.Pattern()
    pattern.pattern = xlwt.Pattern.SOLID_PATTERN
    pattern.pattern_fore_colour = 22               # 背景颜色 代号可以进入源码查看
    title_style.pattern = pattern
    text_style.pattern = pattern
    
    # 位置设置
    alignment = xlwt.Alignment()
    alignment.horz = 0x02                 # 水平居中  可进入源码查看其他样式
    alignment.vert = 0x01                 # 垂直居中  可进入源码查看其他样式
    title_style.alignment = alignment
    text_style.alignment = alignment
    
    # 设置边框
    borders = xlwt.Borders()
    borders.left = xlwt.Borders.DASHED         # DASHED虚线    边框形式
    borders.right = xlwt.Borders.NO_LINE       # NO_LINE没有
    borders.top = xlwt.Borders.THIN            # THIN实线
    borders.bottom = xlwt.Borders.DASHED       
    borders.left_colour = 4                    # 边框颜色  更多颜色,进入看源码
    borders.right_colour = 3
    borders.top_colour = 3
    borders.bottom_colour = 4
    title_style.borders = borders 
    
    # 列宽设置
    for i in range(0, 9):
        if i == 1:
            ws.col(i).width = 256*68
        else:
            ws.col(i).width = 256*19
            
    # 行高设置
    tall_style = xlwt.easyxf('font:height 350;')
    for i in range(0, 100):
        row_hight = ws.row(i)
        row_hight.set_style(tall_style)
    
    # 将数据写入
    nrows = 0
    for rowdata in values:
        ncols = 0
        for celldata in rowdata:
            if nrows == 0:
                # 合并单元格,并写入
                ws.write_merge(0, 0, 0, 8, celldata, title_style)
            else:
                # 按照预定样式写入数据
                ws.write(nrows, ncols, celldata, text_style)
            ncols += 1
        nrows += 1
    
    
    # 将excel对象转为文件流  或 保存到本地
    file_stream = io.BytesIO()
    wb.save(file_stream)
    file_stream.seek(0)
    
    wb.save('./demo.xls')
    
xlsxwriter
  • 基本使用

    import xlsxwriter as xw
    #新建excel
    workbook  = xw.Workbook('myexcel.xlsx')
    #新建工作薄
    worksheet = workbook.add_worksheet()
    #写入数据
    worksheet.wirte('A1',1)
    #关闭保存
    workbook.close()
    
  • 设置样式

    import xlsxwriter
    
    # 创建 excel 和 表 对象
    wb = xlsxwriter.Workbook(xlspath)
    wbsheet = wb.add_worksheet(sheet_name)
    
    # 设置内容样式:字体大小, 字体样式,文本居中
    style = wb.add_format({'font_size': 11, 'align': 'center', 'valign': 'vcenter', 'bold': True})
    
    # 设置表格样式:列宽、行高设置
    wbsheet.set_column(0, 50, 23)  # 0-50列  设置列宽 23
    for nrow in range(10000):
        wbsheet.set_row(nrow, 28)  # 0-999行 设置行高 28
    
posted @ 2020-08-11 08:24  疯狂列表推导式  阅读(4364)  评论(0编辑  收藏  举报