Skip to main content

xltmpl is a package that can append data to excel files without changing worksheets’ style base on openpyxl and xlrd.

Project description

功能

本模块基于openpyxl,通过自定义xls/xlsx模板,向模板写入数据,从而保留表格样式,适合固定格式报表导出。

安装

pip install xltmpl==1.0.6

快速开始

第一步、假设一个xls/xlsx模板的Sheet1设置如下:

A B C D E
1 name age sex
2 {{}} {{}} {{}}
3
  • 第一行是表头
  • 第二行全部填充{{}},然后设置{{}}单元格的格式(如字体、字号、文本颜色、边框、背景等等),后面的单元格样式都使用该行的样式

第二步:往Excel写入数据,可以很方便的写入多种数据类型

# -*- coding: utf-8 -*-
"""
演示xltmpl按模板导出数据
"""
import pandas as pd
from xltmpl.xltmpl import XlTemplate

xlpath_tmpl = 'xlsx_template.xlsx' # xls format is allowed
xlpath_save = 'save.xlsx'

# 指定模板位置,以及写入数据后的新表位置,然后向Excel模板写入数据
with XlTemplate(tmpl_path=xlpath_tmpl, xlpath_save=xlpath_save, place_holder='{{}}') as tmpl:
    # 往Sheet1添加一行数据
    row = ['apple', 'orange', 'banana']
    tmpl.append_row('Sheet1', row)
    
    # 往第一个Sheet天机多行数据
    rows = [
        ['Jason', 'M', 23],
        ['Rose', 'F', 19]]
    tmpl.append_rows(1, rows)
    
    # 往第二个Sheet添加一条记录,其中header_row指定表头位置,style_row指定样式在第几行
    # 添加record时,Excel中有的字段自动放到Sheet对应的列,不存在的字段自动舍弃
    record = {
        'name': 'Micheal',
        'age': 14,
        'sex': 'M',
        'other': '这个字段Sheet中不存在,不会写入Excel'
    }
    tmpl.append_dict(2, record, header_row=1, style_row=2)
    
    # 往第三个Sheet添加一个dataframe
    data = {
        'Name': ['Jason', 'Rose', 'Micheal'],
        'Age': [23, 19, 14],
    }
    df = pd.DataFrame(data)
    tmpl.append_dataframe(3, df)

关于Excel模板

  • xltmpl支持xls和xlsx
  • 表头可以不在第一行,不在第一行时,追加数据需指定header_row参数
  • 模板最后一行全部填充{{}}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xltmpl-1.0.6.tar.gz (15.1 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page